java - 尝试在 Java 中打印数组时出现异常

标签 java arrays loops for-loop

我有这个非常小的 Java 程序(刚开始学习这门语言):

package hellojava;

public class Hellojava {
    public static void main(String[] args) {
        System.out.println("Hello World");
        int[] nums = {1,2,3,4,5,6,7,8,9,10};
        int[] revs = reverse(nums);
        for (int i : revs) {
            System.out.println(revs[i]);
        }
    }

    public static int[] reverse(int[] list) {
        int[] result = new int[list.length];
        for (int i=0, j=result.length-1; i<list.length; i++, j--) {
            result[j] = list[i];
        }
        return result;
    }
}

它抛出这个错误:

 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 10 at hellojava.Hellojava.main(Hellojava.java:9).

所以我很清楚出了什么问题,也知道如何解决它,但我的问题是关于 for 循环的。我认为这个增强的 for 循环可以在这里工作,但事实并非如此。这是为什么?

最佳答案

问题是增强的 for 循环给出了数组的值,而不是索引。因此,返回 10 值,这是一个无效索引。

你的循环开始:

for (int i : revs) {

相当于

for (int index = 0; index < revs.length; index++)
{
    int i = revs[index];
}

关于java - 尝试在 Java 中打印数组时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26723504/

相关文章:

java - P2P java文件传输

java - 如何在 jOOQ 生成器中强制所有 DATE 列为 LocalDateTime?

Java:列出局域网中计算机的文件和文件夹

java - 将big int数组部分存储在数据库中,以减少java中的内存

c# - While or and not 等于不工作?

java - Spring CrudRepository 查询子元素?

javascript - 从属性数组和匹配属性值数组创建 JavaScript 对象的有效方法

ios - 无法对自定义对象数组进行排序

c# - 将 3 维数组复制到 11x3 维数组 C#

jquery - 应该是简单的 jQuery 循环,但似乎无法弄清楚如何循环