1

好的,我需要一个重新创建帕斯卡三角形的类。我们正在使用 BlueJ,我无法让我的数组相互访问。这是代码:

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;
        }
    }
}

该类将编译,但当我到达第三行时,应该读为1 2 1,我java.lang.NullPointerExceptionPascalTriangle.nextLine(PascalTriangle.java:29)它处得到了一个突出显示该行的nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)行。为什么 nextLineArray 会从nextLine()第一次调用该方法时设置的 previousLineArray 中获取信息?

任何帮助将不胜感激:) 谢谢。

4

1 回答 1

2

问题如下:

在 where int [] previousLineArray = new int [(currentLineNumber+1)];- 您创建一个本地数组,该数组会隐藏您的成员并且仅在if语句内部可见。然后当你来到这一行时:nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)它使用你不是 init 的成员数组。

于 2013-11-07T18:57:54.227 回答