Java 增强的For循环异常

Java 增强的For循环异常,java,arrays,for-loop,Java,Arrays,For Loop,在玩循环时创建了以下代码。下面的代码将斐波那契值存储到数组中,然后使用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++) {

在玩循环时创建了以下代码。下面的代码将斐波那契值存储到数组中,然后使用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循环就是这样的

for(int i : numbers)
    {
        System.out.print(numbers[i] + ", ");
    }
for(int i=0;i
i
这里是数组中的元素,而不是索引。它可以大于
数字。长度

例如,如果
numbers={1,2,3,9}
,那么
i
将是
1
2
3
9
。但是它的长度是4,所以当您在其中的元素上循环时,您试图执行的
numbers[9]
超出了它的大小

您可能希望
System.out.print(i+“,”);

应该是

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

您不需要在增强型for循环中使用索引。

快速解释基于0的索引将是一个很好的答案!抱歉,这只是我在问题中提出的代码中的一个错误。这是第一次正确完成的。它仍然无法解释增强型for循环不起作用的原因。我编辑了问题代码以反映这一点.谢谢。简洁易懂。
int tab[] = new int[3]; //tab of length 3
tab[0] = 11;
tab[1] = 24;
tab[2] = 5;
int[] numbers = {1,2,3,4,5,6,7,8,9,10};
class EnhancedForDemo {
    public static void main(String[] args){
         int[] numbers = 
             {1,2,3,4,5,6,7,8,9,10};
         for (int item : numbers) {
             System.out.println("Count is: " + item);
         }
    }
}
for(int i : numbers)
{
     System.out.print(numbers[i] + ", ");
}
for(int i : numbers)
{
    System.out.print(numbers[i] + ", ");
}
   for(int i : numbers)
    {
        System.out.print(i + ", ");
    }