java 字符串反转算法
java string reverse algorithm
我正在尝试编写我自己的字符串反向算法(我知道这已经存在于 java 但我这样做是为了教育)。下面的代码是我到目前为止所拥有的。它只输出一半的字符串反转。我做了一些调试,原因是它正在 stringChars2 同时更改 stringChars 但我不知道为什么会这样我只是想更改 stringChars。非常感谢所有帮助。
编辑 我的问题不是 "how to reverse a string" 之前有人问过...但是为什么我的对象在没有说明的情况下发生变化,下面的答案完全解释了这个问题。
public static void main(String[] args) {
//declare variables
Scanner input = new Scanner(System.in);
String myString = "";
int length = 0, index = 0, index2 = 0;
//get input string
System.out.print("Enter the string you want to reverse: ");
myString = input.next();
//find length of string
length = myString.length()-1;
index2 = length;
//convert to array
char[] stringChars = myString.toCharArray();
char[] stringChars2 = stringChars;
//loop through and reverse order
while (index<length) {
stringChars[index] = stringChars2[index2];
index++;
index2--;
}
//convert back to string
String newString = new String(stringChars);
//output result
System.out.println(newString);
//close resources
input.close();
}
char[] stringChars = myString.toCharArray();
char[] stringChars2 = stringChars;
在第二行,您将 stringChars2
分配给与 stringChars
相同的对象,因此基本上它们是同一个对象,当您更改第一个时,您也会更改第二个。
试试这样:
char[] stringChars = myString.toCharArray();
char[] stringChars2 = myString.toCharArray();
您可以阅读更多相关信息here
一切都没有必要。
您可以简单地使用 for 循环反转字符串(在方法中):
public String reverseString(String str)
{
String output = "";
int len = str.length();
for(int k = 1; k <= str.length(); k++, len--)
{
output += str.substring(len-1,len);
}
return output;
}
我正在尝试编写我自己的字符串反向算法(我知道这已经存在于 java 但我这样做是为了教育)。下面的代码是我到目前为止所拥有的。它只输出一半的字符串反转。我做了一些调试,原因是它正在 stringChars2 同时更改 stringChars 但我不知道为什么会这样我只是想更改 stringChars。非常感谢所有帮助。
编辑 我的问题不是 "how to reverse a string" 之前有人问过...但是为什么我的对象在没有说明的情况下发生变化,下面的答案完全解释了这个问题。
public static void main(String[] args) {
//declare variables
Scanner input = new Scanner(System.in);
String myString = "";
int length = 0, index = 0, index2 = 0;
//get input string
System.out.print("Enter the string you want to reverse: ");
myString = input.next();
//find length of string
length = myString.length()-1;
index2 = length;
//convert to array
char[] stringChars = myString.toCharArray();
char[] stringChars2 = stringChars;
//loop through and reverse order
while (index<length) {
stringChars[index] = stringChars2[index2];
index++;
index2--;
}
//convert back to string
String newString = new String(stringChars);
//output result
System.out.println(newString);
//close resources
input.close();
}
char[] stringChars = myString.toCharArray();
char[] stringChars2 = stringChars;
在第二行,您将 stringChars2
分配给与 stringChars
相同的对象,因此基本上它们是同一个对象,当您更改第一个时,您也会更改第二个。
试试这样:
char[] stringChars = myString.toCharArray();
char[] stringChars2 = myString.toCharArray();
您可以阅读更多相关信息here
一切都没有必要。 您可以简单地使用 for 循环反转字符串(在方法中):
public String reverseString(String str)
{
String output = "";
int len = str.length();
for(int k = 1; k <= str.length(); k++, len--)
{
output += str.substring(len-1,len);
}
return output;
}