错误消息:线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:-1

时间:2014-04-06 20:52:45

标签: java exception indexoutofboundsexception

我是第一类Java编程,我们给出的一个任务是创建一个以逗号分隔的相反顺序显示的值字符串。我知道我可能错过了一些非常简单的事情,但经过几个小时的尝试后我就不知道自己哪里出错了?

我的代码有效,但我不断收到此错误消息:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1 
    at ip2_jolley.IP2_Jolley.main(IP2_Jolley.java:148) 
Three, Two, One Java Result: 1

这是我正在使用的代码:

String[] f = {"One", "Two", "Three"};
if (f.length > 0) System.out.print (f[2]);
for (int i = 1; i < f.length; i--){
    System.out.print(", " + f[i]); 
}

3 个答案:

答案 0 :(得分:2)

在你的代码中,从1开始,循环直到数组的长度,但每次都减少。这有点混乱。你想要做的是从数组的末尾开始(所以f.length - 1)并继续移动到数组的“左”,直到你开始它。所以你想要这个:

for (int i = f.length-1; i >= 0; i--){
   System.out.print(f[i]); 
}

答案 1 :(得分:1)

用int i = 1开始循环,然后每循环减少1次,这将导致i低于0。

您可能希望使用int i = 1

,而不是使用int i = f.length

修改

你想要的可能就是:

  String[] f = {"One", "Two", "Three","Four","Five"};

    //start at f.length - 1, continue until there is no item left
    for (int i = f.length-1; i >= 0; i--){

        //print current item
        System.out.print(f[i]);

        //if it is not the last item, print separator
        if(i>0){
            System.out.print(", ");
        }
    }
}

编辑了一些解释

答案 2 :(得分:0)

你的意思是:

for (int i = 0; i < f.length; i++)

而不是:

for (int i = 1; i < f.length; i--)