Pascal'sches Dreieck

DerDecane

Aktives Mitglied
Hey Leute, habe eine Aufgabe in der ich in Java das Pascal'sche Dreieck implementieren soll. Mein Code sieht so aus:
Java:
import java.util.Scanner;

class Pascal{
    static int [][] pscl (int n){
        int k = n;
        int [][] dreieck = new int [n][k];
      
        for (int i=0; i<n; i++){
            for (int j=0; j<k; i++){
                if (j==0 || j==i){
                    dreieck[i][j]=1;
                }//if
                else{
                    dreieck[i][j] = dreieck[i-1][j-1] + dreieck[i-1][j];
                }//else      
            }//for_j
        }//for_i
        return dreieck;
    }//pscl

    public static void main (String[]args){
        Scanner sc = new Scanner (System.in);
        System.out.println("Geben sie ein n ein!");
        int eingabe = sc.nextInt();
            if (eingabe>20){
                System.out.println("Das von ihnen gewaelte n ist zu gross!");
            }//if
            else{  
                int [][] result;
                result = pscl(eingabe);
                for (int i=0; i<result.length; i++){
                    for (int j=0; j<result[0].length; i++){
                System.out.printf("%-6d", result[i][j]);
                    }//for_j
                }//for_i
            }//else
    }//main
}//class
Das Programm compiliert, aber wenn ich es starte und eine Zahl für n eingebe kommt die Fehlermeldung "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 (da ich hier als Zahl 4 eingegeben hab, das passiert aber bei jeder Zahl die ich eingebe)
at Pascal.pscl(Pascal.java:13)
at Pascal.main(Pascal.java:37)"

Was soll ich tun? Hab grad garkeinen Plan ^^
 
Zuletzt bearbeitet von einem Moderator:
Man, bei mir hats auch ewig gedauert ^^
Java:
 for (int i=0; i<n; i++){
            for (int j=0; j<k; i++){

du erhöhst in beiden Schleifen das i und nicht das j.
 
Oh wow, okay danke. Habs mal geändert, neu compiliert und nochmal laufen lassen. Jetzt kommt die gleiche Fehlermeldung wie vorher, aber statt der Zahl 4 (bzw. jeder anderen Zahl) erscheint in der Fehlermeldung nun immer die Zahl -1 UND der Fehler liegt jetzt in Zeile 17 und 37, nichtmehr in 13.
 
Du betrittst die äußere for-Schleife -> i=0;
Du betrittst die innere for-Schleife -> j=0;
Java:
                if (j==0 || j==i){
                    dreieck[i][j]=1;
                }
Die Bedingung ist erfüllt (da j==0).

Nächster Schleifendurchlauf -> i=0; j=1;
Da j!=0 und j!=i, ist die Bedingung nicht erfüllt, also wird folgender Code ausgeführt.
Java:
dreieck[i][j] = dreieck[i-1][j-1] + dreieck[i-1][j];
i-1 = -1

Und bei einem Array kannst du nicht auf den Index -1 zugreifen.

Aber das hättest du selbst leicht rausfinden können, wenn du deinen Code Schritt für Schritt durchgehst.
 
Zuletzt bearbeitet von einem Moderator:
Ein bisschen Eigeniniative wäre gut.
Du darfst nicht bei i=0 anfangen. Fang bei i=1 ein und überleg was du davor dann noch machen musst.

Deine Ausgabe in der main-Funktion ist auch noch falsch.
 
Ah okay, ich fang einfach bei 1 an in der Schleife und setze den Wert von i=0 auf 1, da die oberste Zeile nur einen Wert hat undzwar die 1.
 
Zuletzt bearbeitet:

Zurück
Oben