Fibonacci

franzleitinger

Grünschnabel
Hi an alle.Bin Java-Anfänger und habe hier einen Code wo ich die Fehler beheben soll doch leider hab ich keine Ahnung wo der Fehler im Code ist.Vielleicht kann mir jemand helfen...
Code:
public class Fibo_3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int klein = 0;
		int groß = 1;
		int werte [] = new int [11];

		werte [0] = klein;
		werte [1] = groß;
		
		for(int i = 2;i<=11;i++){
			werte [i] = werte[i-2] + werte[i-1];
			groß = werte[i];
			klein = werte[i-1];
		}
		int i=0;
		while (i < werte.length) {
			System.out.println("f" + i + ": " + werte[i]);
			i++;
			}
		
			if (werte[10] >= 60)
			System.out.println("f10 ist zu groß");
			
			else
			System.out.println("\nf10 könnte korrekt sein.");
	}

}
 
Hallo franzleitinger und Herzlich Willkommen hier bei tutorials.de :)

Bitte fasse deinen Code in die entsprechenden Tags ein ([ java] Code ...... [/ java]), so ist der um einiges leichter zu lesen:

Java:
public class Fibo_3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int klein = 0;
		int groß = 1;
		int werte[] = new int[11];

		werte[0] = klein;
		werte[1] = groß;
		
		for(int i = 2;i<=11;i++){
			werte[i] = werte[i-2] + werte[i-1];
			groß = werte[i];
			klein = werte[i-1];
		}
		int i=0;
		while (i < werte.length) {
			System.out.println("f" + i + ": " + werte[i]);
			i++;
		}
		
		if (werte[10] >= 60)
			System.out.println("f10 ist zu groß");
		else
			System.out.println("\nf10 könnte korrekt sein.");
	}

}

Nun zu deinem Problem:
Ich kann da auf die schnelle keinen Fehler finden, gibt es eine Fehlermeldung? Oder bringt es falsche Zahlen? Eine etwas genauere Angabe wäre sehr hilfreich ;)

Ein kleiner Hinweis noch: In der for-Schleife setzt du immer wieder die Variablen "groß" und "klein", dies ist unnötig. Setze diese einmal nach der Schleife.

Des weiteren hast du bei deinem Array ab und zu ein Leerzeichen vor der öffnenden Klammer. Weiß jetzt nicht, ob das falsch ist, würde ich aber weglassen.

Gruß
BK
 
Zuletzt bearbeitet:
Die genaue Angabe lautet:

Das folgende Codefragment berechnet die ersten elf Fibonacci-Zahlen f0, f1, … , f10 und gibt diese anschließend auf der Konsole aus. Korrigieren Sie die Fehler im Code und geben Sie den Inhalt des Arrays „werte“ an!

und ich bekomme eine Fehlermeldung:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 11
at Fibo_3.main(Fibo_3.java:16)
 
Hallo,

ja der Fehler klingt logisch. Schau dir mal Zeile 16 (was ich sowiso schon rausstreichen wollte :D) genau an, vorallem welchen Wert "i" beim letzten Durchgang haben wird.
Hier wird dann versucht, auf das 11te Element von "werte" zuzugreifen. Das Array hat zwar 11 Elemente, diese sind aber von 0 bis 10 nummeriert. Daher die Exception.

Wirf die Zeilen 16 und 17 raus, dann sollte es weitergehen :)

Gruß
BK
 
Das Problem müsste eher in der Abbruchbedingung der Schleife liegen die i bis zu einem Wert von 11 erhöht und 11 selbst noch zulässt. Damit versuchst du auch schon in Zeile 15 auf das Feld mit dem Index 11 im Array zu zu greifen. Das gibt es allerdings nicht.
Du musst also die Schleife etwas anpassen. Soviel als Tipp von mir. ;)
 
Der Wolf hat recht.

Ich erweitere den Tipp mal etwas =>

Ein Feld beginnt immer bei 0.
Erstellst du ein Array mit 9Elementen, dann läuft das Array von 0-8.

Dein Array hast du mit 11 Elementen erstellt, dann läuft es von 0-?. :)

Willst du auf ein Feld darüber zugreifen, dann gibs Fehler.
 
Zurück