java - 这个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)
而且我不想为每个循环做一个。提前致谢
解决方案
Java 数组的数组索引从 0 开始。所以如果数组中有 3 个东西,它们的索引是 0、1 和 2。
您已经设置了循环,使其从 开始k = 3
,并且在随后的迭代中(如果它到达它们),它将具有k = 2
then k = 1
。
但是这些与数组中的索引不匹配。特别是,当k = 3
数组中没有匹配的条目时,这就是导致程序崩溃的原因。
您需要更改循环的设置方式,以便它迭代k = 2
, then k = 1
, then k = 0
。我可以建议以下更改吗?
for (int k = fruits.length - 1; k >= 0; k--) {
其他一切都可以保持不变。
推荐阅读
- r - 转置数据帧
- java - XML 文本元素空白
- android - 尝试将电子邮件地址作为密钥存储在 firebase 数据库中,但出现此错误:
- java-8 - 如何修复单行初始化的声纳警告?
- machine-learning - 你能解释一下这个问题吗?我是 ML 新手,我遇到了这个问题,但我不清楚它的解决方案
- android - Android Studio 未找到库
- c# - 将内联表值函数与 Linq 和 Entity Framework Core 一起使用
- sql - SQL - 根据最近的日期选择非空值
- node.js - 从服务器文件中提取猫鼬模型的创建
- google-apps-script - Google Script Deploying Web App - URL 错误