ループで遊んでいる間に以下のコードを作成しました。以下のコードは、フィボナッチ値を配列に格納し、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 ループを使用して値を出力しました (コードの 2 番目の 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)
何が悪かったのかわかりません。2 番目のループを変更しても、値は変更されません (フィボナッチ値が間違っている (つまり値が欠落している) ことに気付くでしょう)。そして、単純な強化された for ループがインデックスをスキップする理由がわかりません。これはプロジェクトなどのためのものではないので、大したことではありません。手がかりはありますか?
強化された for ループは次のようになります。
for(int i : numbers)
{
System.out.print(numbers[i] + ", ");
}