int i=0;
while(!a.isEmpty()) {
if(a.toCharArray()[i]==' ') {
System.out.println(a.toCharArray()[i]);
}
i++;
}
当我运行这个程序时,它给了我一个错误:索引超出范围。我该如何解决?
int i=0;
while(!a.isEmpty()) {
if(a.toCharArray()[i]==' ') {
System.out.println(a.toCharArray()[i]);
}
i++;
}
当我运行这个程序时,它给了我一个错误:索引超出范围。我该如何解决?
你不会a
在循环中改变,所以a.isEmpty()
不会改变,你会继续循环直到i
超出界限。你的意思:
while (i < a.length()) {
顺便说一句,a.toCharArray()[i]
可以(并且应该)简单地a.charAt(i)
(正如@MartijnCourteaux 也指出的那样)。
已经有几个答案可以解决这个问题。这个答案是关于你如何自己找到问题的。
循环中的大多数数组索引越界错误是由于不正确的循环条件造成的,因此即使在索引到达循环末尾后条件仍然成立。您的循环条件不依赖于i
,因此它可以从true
to更改的唯一方法false
是 ifa
在循环内更改。
如果您希望a
更改,您应该放入System.out.println(a)
循环中,并监视a
. 你会看到它没有改变。
或者,如果isEmpty
测试是一个错字,并且您打算测试依赖于 的东西,那么i
桌面检查您的循环条件应该已经找到它。
您应该将循环更改为此:
char[] c=a.toCharArray();
for(i=0; i<c.length; i++){