在使用循环时,我编写了下面的代码。以下代码将Fibonacci值存储到数组中,然后使用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] + ", ");
}