Java Programm pascalsche dreieck?

code - (Schule, Programm, programmieren)

2 Antworten

Du fängst Deine Schleife bei i=0 an und rufst in der Schleife dann feld[i-1] auf, dh, Du greifst auf feld[-1] zu. Das kann natürlich nicht funktionieren, daher: "Index out of bounds", also "Index ist außerhalb des Bereiches" (frei übersetzt)

Wenn ich das richtig in Erinnerung habe ist beim pascalschen Dreieck das erste und das letzte Feld jeder Zeile immer 1, oder? Dh Du kannst die außerhalb der Schleife setzen.


Daniel3005 
Beitragsersteller
 30.03.2017, 16:12

ok, Danke ;)

0

Ich habe den Code mal kurz überflogen, offensichtlich hast du mit Arrays etwas falsch verstanden.

Eine "ArrayIndexOutOfBoundsException" wird geworfen wenn du versuchst einen Wert außerhalb des Bereiches eines Arrays aufzurufen, in diesem Fall -1.

Die for-Schleifen sehen richtig aus, denn ein Array mit zum Beispiel der Größte 5 hat einen Bereich von 0 bis 4. Deine Schleife startet genauso bei 0 und hört auch beim Maximalwert des Arrays auf, jedoch ziehst du von der Variable 1 ab wodurch du beim ersten Durchgang einen Wert von -1 erhälst, welcher nie im Bereich des Arrays liegt.


PWolff  30.03.2017, 16:38

Das könnte mit derjenigen Definition der Pascalzahlen zusammenhängen, bei der (n über k) für k<0 oder k>n zu 0 definiert wird.

Es ist oft so, dass man die Arraygrenzen bzw. den ersten und/oder letzten Schleifendurchlauf gesondert behandeln muss.

(Nur gut, dass das keine Übung in C++ ist - da hätte es vermutlich keine Fehlermeldung, aber falsche Ergebnisse gegeben, für die die Ursachenforschung sich als epische Quest herausstellen könnte.)

0
PWolff  30.03.2017, 16:41
@PWolff

BOFH-Lösungsvorschlag: Schau mal, ob du in den Compiler-Einstellungen die Überprüfung von Array-Grenzen abschalten kannst. (NICHT tun, ohne zu wissen, was BOFH bedeutet!)

0