我很困惑。逻辑是合理的,但最后我得到了这个奇怪的中间镜像字符串。
public static void main(String[] args) {
String x = "Hello";
char str[] = x.toCharArray();
char done[] = str;
int doneMarker = 0;
System.out.println("str.length is: " + str.length);
for (int i= str.length-1; i>(-1); i--)
{
done[doneMarker] = str[i];
doneMarker++;
System.out.println("i = " + i);
System.out.println("doneMarker = " + doneMarker);
}
String reversed = new String(done);
System.out.println(reversed);
}
最佳答案
当你这样做时:
char done[] = str;
您将 done
指向 str
,因此您开始更改原始 char 数组。
旁注:
for (int i= str.length-1; i>(-1); i--)
通常写成
for (int i=str.length-1; i>=0; i--)
此外,您不需要第二个计数器。
您可以大大简化整个事情。
public static void main(String[] args) {
String x = "Hello";
char str[] = x.toCharArray();
char done[] = new char[str.length];
System.out.println("str.length is: " + str.length);
for (int i=str.length-1; i>=0; i--)
{
done[i] = str[str.length - 1 - i];
System.out.println("i = " + i);
}
String reversed = new String(done);
System.out.println(reversed);
}
关于java - 为什么我会得到这个结果?反转字符串的简单循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947290/