Question

Ok, j'ai besoin d'avoir une classe qui recréera le triangle Pascal. Nous utilisons Bluej et je ne peux pas obtenir mes tableaux pour accéder les uns aux autres. Voici le code:

public class PascalTriangle {

    private int currentLineNumber;
    private int[] previousLineArray;
    private int[] nextLineArray;

    public void firstLine()
    {
        currentLineNumber = 1;
        System.out.println("1");
    }

    public void nextLine()
    {
        if (currentLineNumber == 1) {
            int [] previousLineArray = new int [(currentLineNumber+1)];
            previousLineArray[0] = 1;
            previousLineArray[1] = 1;
            System.out.println("1 1");
            currentLineNumber = 2;
        }
        else if(currentLineNumber >= 2) {
            for (int lineCount = currentLineNumber; lineCount <= currentLineNumber; lineCount++) {
                int [] nextLineArray = new int [(lineCount+1)];
                nextLineArray[0] = 1;
                System.out.print(nextLineArray[0] + " ");
                for (int nextLineCount = 1; nextLineCount < lineCount; nextLineCount++) {
                    // The next line is the line with the NullPointerException
                    nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)
                    + previousLineArray[(nextLineCount)]]); 
                    System.out.print(nextLineArray[(nextLineCount)] + " ");
                }
                nextLineArray[(lineCount)] = 1;
                System.out.print(nextLineArray[(lineCount)] + "\n");
                previousLineArray = nextLineArray;
            }
            currentLineNumber = currentLineNumber+1;
        }
    }
}

La classe sera compilée mais à mesure que j'arrive à la troisième ligne, qui devrait lire 1 2 1, J'ai un java.lang.NullPointerException à PascalTriangle.nextLine(PascalTriangle.java:29) il hausse les listes le nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1) ligne. Pourquoi le NextLineArray prendra-t-il les informations de PriveLineArray qui est définie lorsque le nextLine() La méthode est appelée pour la première fois?

Toute aide serait appréciée Merci.

Était-ce utile?

La solution

Le problème est le suivant:

dans la ligne où int [] previousLineArray = new int [(currentLineNumber+1)]; - Vous créez un tableau local qui ombrage votre membre et uniquement visible à l'intérieur de if déclaration. Ensuite, quand vous arrivez sur cette ligne: nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1) Il utilise votre tableau de membres qui n'était pas init.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top