質問: new Program(); p.input(); p.compute(); p.output(); } } ``` 初めてjavaで配列を使うので、何がだめなのかが分かりません。 ちなみに配列については以下のサイトを参考にしました。 リンク内容 > > エラー文 > > Exception in thread "main" 0 > > 0 > > 0 > > java.lang.ArrayIndexOutOfBoundsException: 3 > > at Program.output(Program.java:15) > > at Program.main(Program.java:24) > > どこが間違えているのか教えていただけないでしょうか > > >
回答: > > > ``` > int num[] = new int[3]; > ... > for(int i=2;i<=9;i++) { > num[i]= num[i-1]+num[i-2]; > ... > } > ``` > > i = 3 のとき、配列numへの範囲外アクセスが起きていることにはお気付きでしょうか。 ``` Array Index OutOfBounds Exception 配列 インデックス 範囲外 例外 ``` **対策** 簡単にできるのは次のうちどちらか。 1. numの要素数を充分増やす 2. ArrayListなど可変長のクラスを使う あるいは前回と前々回の数値だけ変数にぶっこむような方法もアリです。 後になってフィボナッチ数列を再利用しないのならこれでも充分。