-8
int i=0;    
while(!a.isEmpty()) {         
    if(a.toCharArray()[i]==' ') { 
        System.out.println(a.toCharArray()[i]);         
    }         
    i++;     
}     

当我运行这个程序时,它给了我一个错误:索引超出范围。我该如何解决?

4

3 回答 3

5

你不会a在循环中改变,所以a.isEmpty()不会改变,你会继续循环直到i超出界限。你的意思:

while (i < a.length()) {

顺便说一句,a.toCharArray()[i]可以(并且应该)简单地a.charAt(i)(正如@MartijnCourteaux 也指出的那样)。

于 2013-08-10T00:55:56.240 回答
2

已经有几个答案可以解决这个问题。这个答案是关于你如何自己找到问题的。

循环中的大多数数组索引越界错误是由于不正确的循环条件造成的,因此即使在索引到达循环末尾后条件仍然成立。您的循环条件不依赖于i,因此它可以从trueto更改的唯一方法false是 ifa在循环内更改。

如果您希望a更改,您应该放入System.out.println(a)循环中,并监视a. 你会看到它没有改变。

或者,如果isEmpty测试是一个错字,并且您打算测试依赖于 的东西,那么i桌面检查您的循环条件应该已经找到它。

于 2013-08-10T01:15:25.657 回答
0

您应该将循环更改为此:

char[] c=a.toCharArray();
for(i=0; i<c.length; i++){
于 2013-08-10T00:57:36.037 回答