Auf Thema antworten

In der Funktion hast Du es nun richtig gemacht - im Text hier im Forum hast Du es wieder falsch geschrieben. Es geht nicht um a.length sondern um a.length.

Oder wenn Du das optimieren willst: a.length ist ja i +1, also hast Du da in der Überprüfung j == i + 1 - 1 und das ist dann ein j == i;


Und ja, wenn Du das pascal(4) Ergebnis direkt mit System.out.println ausgibst, dann bekommst Du nur die Referenz ausgegeben. Daher hast Du ja auch eine print Funktion geschrieben. Ruf doch einfach Deine print Funktion auf:

[code]

print(pascal(4));

[/code]


Gratuliere - damit hast Du jetzt eine recht gute Lösung geschrieben. Aber ich möchte auf den Namen noch etwas herum reiten :)


Also der Funktionsname pascal ist Müll. Klar, ist vorgegeben worden, aber normalerweise heißen Funktionen ja wie Aktionen. toString, toLower, print, ...

Also was macht diese Funktion? Sie erstellt etwas - daher ist ein create schon ein guter Anfang. Dann ist das ja ein Pascal Dreieck - also createPascalTriangle oder so wäre ein guter Name und jeder, der liest:

print(createPascalTriangle(6)); weiss, was da passiert. Aber bei einem Aufruf pascal(4)? Ein Array mit 4 Pascal-Programmen? Ja was machen die denn? :p

Aber klar - das ist vorgegeben und habe ich dann auch einmal gelassen.


Ansonsten habe ich aber einmal die beiden angesprochenen Funktionen in etwas anderer Form für Dich:

[code=Java]

public static int[][] pascal(int n) {

    int[][] result = new int[n][];


    for (int zeile = 0; zeile < result.length; zeile++) {

        result[zeile] = new int[zeile+1];

        for (int spalte = 0; spalte <= zeile; spalte++) {

            if (spalte == 0 || spalte==zeile) {

                result[zeile][spalte] = 1;

            } else {

                result[zeile][spalte] = result[zeile - 1][spalte - 1] + result[zeile - 1][spalte];

            }

        }

    }

    return result;

}


public static final int ASCII_UPPERCASE_A = 65;

public static final int ASCII_UPPERCASE_Z = 90;

public static final int ASCII_LOWERCASE_A = 97;


public static String toLower(String text){

    String result="";

    for(int index=0; index<text.length(); index++){

        if(text.charAt(index) >= ASCII_UPPERCASE_A && text.charAt(index) <= ASCII_UPPERCASE_Z)

            result += (char)((int)text.charAt(index) + ASCII_LOWERCASE_A - ASCII_UPPERCASE_A);

        else result += text.charAt(index);

    }

    return result;

}

[/code]


Also andere Namen, so dass besser nachvollzogen werden kann, was da passiert und dann die magischen Nummern rausgeschmissen und dafür Konstanten eingeführt.


Und kleine Optimierungen. Also sowas wie i < something + 1 ist das Gleiche wie i <= something.

(Und nimmt eine Addition weg.)



Oben