当方つい最近Javaを始めた初心者です。現在javaにてフィボナッチ数列の第n項目を取り出すプログラムを書いています。しかし3以上の入力の際に表示される結果がすべて0になってしまう不具合が起き悩んでいます。不具合の原因と改善点を挙げて説明してもらえると助かります。なお、不具合以外にも改善点があればぜひ指摘してくださって結構です。リンク内容
プログラムはコマンドプロンプト上で動くもので開発環境はEclipseです。
###該当のソースコード
java
1package フィボナッチ数列; 2 3import java.util.InputMismatchException; 4import java.util.Scanner; 5 6public class Fibonacci { 7 /* 8 * フィボナッチ数列の第n項を表示したい 9 */ 10 11 int fibonacci_number[]; 12 int n; 13 14 //実行 15 public static void main(String args[]){ 16 new Fibonacci(); 17 } 18 19 public Fibonacci(){ 20 System.out.println("フィボナッチ数列の第n項を調べてやる、です"); 21 System.out.println("好きな数を打ちやがれ、です"); 22 23 Scanner scan = new Scanner(System.in); //キーイベント 24 try { 25 int input= scan.nextInt(); 26 calculation(input); 27 }catch(InputMismatchException e){ //入力が数字以外の場合 28 System.out.println("数字入れろって言ってるダルォ!?"); 29 return; 30 } 31 32 fibonacci_number = new int[n]; 33 } 34 35 public void calculation(int x){ 36 int n = x; 37 if( n < 3){ //入力が3未満だった場合 38 if(n == 1 ){ //一番目(0)を表示 39 printresult(0,x); 40 } 41 else if(n == 2){ //二番目(1)を表示 42 printresult(1,x); 43 } 44 }else{ //ループに入る 45 fibonacci_number = new int[n--]; 46 fibonacci_number[0] = 0; 47 fibonacci_number[1] = 1; 48 for(int i=0;i<n-2;i++){ 49 int two_before = i; //二個前 50 int before = ++i; //一個前 51 int ans = fibonacci_number[two_before] + fibonacci_number[before]; 52 fibonacci_number[i+2] = ans; 53 } 54 printresult(fibonacci_number[n--],x); //計算結果表示 55 } 56 } 57 //結果を表示する 58 public void printresult(int s,int y){ 59 System.out.println("フィボナッチ数列の第"+ y + "項目の数は"+ s + "です。"); 60 } 61} 62
###試したこと
他の質問サイトにてもアドバイスを受け何とかエラーは出なくなりました。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。