2017-10-12 6 views
-3

im Versuch, ein Programm, wo der Benutzer eine Nummer und die Konsole ist die Fibonacci-Nummer. Ich habe Probleme herauszufinden, warum das wie fibbonaci fib = new fibonacci mein Programm stoppt. Wenn der Computor diese Zeile liest, stoppt der Code-Juts, um zu laufen.wie man nicht-statische Methoden in Hauptmethode

Edit: Vielen Dank für die Antworten Jungs, aber ich habe immer noch Probleme zu verstehen. Könnte jemand bitte den Code neu schreiben, damit der Fehler behoben ist? Vielen Dank!

Edit: Ich fand es heraus, danke für die Hilfe!

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)); 
    } 
} 
+0

Ihre Methode 'public int fibonacci (int input)' sollte etwas anderes heißen. Die einzige Methode, die denselben Namen wie Ihre Klasse haben sollte, ist der Konstruktor. Auch Ihre Variablen 'f1',' f2' und 'answer' sollten innerhalb Ihrer Methode deklariert werden, es gibt keinen Grund dafür, dass sie Instanzvariablen sind. Und entferne die Deklaration von "input" und "fnumber" von der Spitze deiner Fibonacci-Klasse, sie werden nicht benutzt. – Flaom

+0

Ich würde mir auch ein paar andere Dinge ansehen. Wenn Sie in der For-Schleife "int antwort" sagen, ist dies eine neue Variable (nicht das Feld in Ihrer Klasse). Wenn Sie 'answer' außerhalb der 'for'-Schleife zurückgeben, geben Sie das Feld (mit dem gleichen Namen) zurück, das innerhalb der Schleife nicht geändert wurde. Gleiches gilt für die Deklaration 'int f2 = 1;' in der 'for'-Schleife. – user2478398

+0

Und innerhalb Ihrer for-Schleife initialisieren Sie eine weitere 'answer'-Variable, die nach der Initialisierung niemals verwendet wird. Entfernen Sie innerhalb der for-Schleife den Typdefinitor 'int' aus' answer'. – Flaom

Antwort

0

Sie müssen ein Objekt Ihrer Klasse erstellen. Rufen Sie dann die Methode mit dem Objekt in der Hauptmethode (statisch) auf.

0

instanziieren Sie die Fibonacci-Klasse in Ihrem Hauptteil.

fibonacci f = new fibonacci(); 
f.fibonacci(input); 

Auch Ihre Klasse (und Datei) sollte Fibonacci benannt werden. Klassenname hat immer einen Großbuchstaben.