增强的 For 循环异常 [重复]

2023-11-27

在玩循环时创建了以下代码。下面的代码将斐波那契值存储到一个数组中,然后使用 for 循环打印它们。

    int [] numbers;
    numbers = new int[25];

    numbers[0] = 1;
    numbers[1] = 1;
    System.out.println("Initializing the array values");

    for(int i = 2; i < numbers.length; i++)
    {
        numbers[i] = numbers[i-1] + numbers[i-2];
    }

    System.out.println("Printing out Fibonacci values");

    for(int i = 0; i < numbers.length; i++)
    {
        System.out.print(numbers[i] + ", ");
    }

上面的代码工作正常。不过,第一次将它们组合在一起时,我使用了增强的 for 循环来打印出值(代码中的第二个 for 循环)。这编译得很好,但是当我运行它时,我得到以下信息;

Initializing the array values
Printing out Fibonacci values
1, 1, 2, 3, 8, 34, 377, 17711, Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 34
at ArrayDemo.main(ArrayDemo.java:21)

我不明白出了什么问题。更改第二个循环不应更改值(您会注意到斐波那契值是错误的(即缺少值))。我不明白为什么一个简单的增强 for 循环会跳过索引。现在,这并不是什么大问题,因为这不是为了一个项目或任何东西,它只是让我烦恼,我不明白为什么要这样做。有什么线索吗?

增强的 for 循环看起来像这样;

for(int i : numbers)
    {
        System.out.print(numbers[i] + ", ");
    }

for(int i : numbers)
{
     System.out.print(numbers[i] + ", ");
}

i这里是elements在数组中,而不是索引中。它可能大于numbers.length.

例如,如果numbers = {1,2,3,9} then i1, 2, 3, 9。但它的长度是 4,所以当你循环它里面的元素时,你试图做numbers[9]这超出了它的大小。

你可能想要System.out.print(i + ", ");

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

增强的 For 循环异常 [重复] 的相关文章

随机推荐