首页 > 解决方案 > 这个for循环有什么问题?奇怪的错误

问题描述

我正在学习 for 循环,每当我执行此循环时

String[] fruits = {"Apple", "Banana", "Orange"};
        for (int k = fruits.length;k > 0; k--) {
            System.out.println(fruits[k]);
}

我得到这个错误

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
    at helloworld.HelloWorld.main(HelloWorld.java:439)
Java Result: 1
BUILD SUCCESSFUL (total time: 10 seconds)

而且我不想为每个循环做一个。提前致谢

标签: javafor-loop

解决方案


Java 数组的数组索引从 0 开始。所以如果数组中有 3 个东西,它们的索引是 0、1 和 2。

您已经设置了循环,使其从 开始k = 3,并且在随后的迭代中(如果它到达它们),它将具有k = 2then k = 1

但是这些与数组中的索引不匹配。特别是,当k = 3数组中没有匹配的条目时,这就是导致程序崩溃的原因。

您需要更改循环的设置方式,以便它迭代k = 2, then k = 1, then k = 0。我可以建议以下更改吗?

for (int k = fruits.length - 1; k >= 0; k--) {

其他一切都可以保持不变。


推荐阅读