我想通过StringBuilder
反转字符串。我已经写了下面的代码,但是一旦碰到循环就会报错。该错误是在没有StringBuilder的Java中反转字符串
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 16
at lectures.ReverseString.main(ReverseString.java:38)
如果有人能告诉我为什么,这将是巨大的。仅供参考我知道这段代码效率不高,但我想知道它为什么不适合教育。
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.nextLine();
//find length of string
length = myString.length();
index2 = length;
//convert to array
char[] stringChars = myString.toCharArray();
char[] stringChars2 = stringChars;
//loop through and reverse order
while (index<length) {
stringChars2[index] = stringChars[index2];
index++;
index2--;
}
//convert back to string
String newString = new String(stringChars2);
//output result
System.out.println(newString);
//close resources
input.close();
}
应当'索引2 =长度 - 1;'记住阵列索引从0 ...长度 - 1 –
尝试使用此:长度= myString.length() - 1; –
顺便说一句,如果我可以给一个建议,你不需要两个数组来做到这一点。只需使用一个单一的阵列中,有两个指标变量,并交换第一个和最后一个字符,然后交换第二个和最后一个字符的下一个,等等......你继续这样做,直到你的两个指标在中间相遇。 – Discoverer98