Pregunta

Ok, necesito tener una clase que recree el Triángulo Pascal. Estamos usando BlueJ y no puedo hacer que mis matrices se accedan entre sí. Aquí está el código:

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 clase se compilará pero a medida que llegue a la tercera línea, que debería leer 1 2 1, Yo tengo un java.lang.NullPointerException a PascalTriangle.nextLine(PascalTriangle.java:29) Highlists the nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1) línea. ¿Por qué el NextLinearRay tomará la información de AnteriorlinearRay que se establece cuando el nextLine() ¿Se llama el método por primera vez?

Cualquier ayuda será apreciada, gracias.

¿Fue útil?

Solución

El problema es el siguiente:

en la línea donde int [] previousLineArray = new int [(currentLineNumber+1)]; - Creas una matriz local que sombrea a tu miembro y solo visible dentro de if declaración. Entonces cuando llegas a esta línea: nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1) Utiliza su matriz de miembros que no fue init.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top