ユーザーが数字を入力し、コンソールがフィボナッチ数であるプログラムを作成しようとしています。 fibbonaci fib = new fibonacciのようなものが私のプログラムを止めている理由を調べるのに困っています。コンピュータがその行を読み取ると、コードの実行が停止します。メインメソッドで非静的メソッドを呼び出す方法
編集:回答ありがとうございましたが、まだ理解に問題があります。エラーが修正されるようにコードを書き直してください。ありがとう!
編集:私はすべての助けをいただきありがとうございました!
import java.util.Scanner;
public class fibonacci {
Scanner fnumber = new Scanner (System.in);
int input = fnumber.nextInt();
int f1 = 1;
int f2 = 1;
int answer = f1 + f2;
public int fibonacci(int input) {
for(int f2 = 1; f2<input; f2++) {
int answer = f1 + f2;
f1 = f2;
f2 = f2 + 1;
}
return answer;
}
public static void main(String args[]){
System.out.println("please enter a number");
Scanner fnumber = new Scanner (System.in);
int input = fnumber.nextInt();
System.out.println("The " + input + "th number of the fibonacci sequence is " + fib.fibonacci(input));
}
}
あなたのメソッド 'public int fibonacci(int input)'には、別の名前を付ける必要があります。あなたのクラスと同じ名前を持つべき唯一のメソッドはコンストラクタです。また、あなたの変数 'f1'、' f2'、そして 'answer'はあなたのメソッドの中で宣言されるべきです、それらがインスタンス変数である理由はありません。フィボナッチクラスの上から 'input'と' fnumber'の宣言を取り除くと、それらは使われません。 – Flaom
私は他にもいくつかのことを見ています。あなたが 'int答え'〜 'for'ループと言うとき、これは新しい変数です(あなたのクラスのフィールドではありません)。あなたが '返答'を返すと、ループの中で変更されていないフィールド(同じ名前のもの)が返されます。 'for'ループのオープン時の' int f2 = 1; '宣言と同じです。 – user2478398
そしてあなたのforループの中で、あなたは初期化された後に決して使われない別の 'answer'変数を初期化しています。 forループ内の 'answer'から' int'型指定子を削除してください。 – Flaom