我的程序给出了索引超出范围的错误

时间:2013-08-10 00:53:05

标签: java indexoutofboundsexception

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

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

3 个答案:

答案 0 :(得分:5)

您没有在循环中更改a,因此a.isEmpty()不会更改,您将继续循环,直到i超出范围。你的意思是:

while (i < a.length()) {

另外,a.toCharArray()[i]可以(而且应该)只是a.charAt(i)(正如@MartijnCourteaux也指出的那样)。

答案 1 :(得分:2)

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

循环中大多数数组索引超出边界错误是由于不正确的循环条件造成的,因此即使在索引到达循环结束之后条件仍然为真。您的循环条件不依赖于i,因此它可以从true更改为false的唯一方法是a在循环内发生变化。

如果您希望更改a,则应将System.out.println(a)置于循环内,并监控a的值。你会看到它没有改变。

或者,如果isEmpty测试是拼写错误,并且您打算测试依赖于i的内容,那么检查您的循环条件的桌面应该已找到它。

答案 2 :(得分:0)

你应该改变你的循环:

char[] c=a.toCharArray();
for(i=0; i<c.length; i++){