问题是以下:
在线中 int [] previousLineArray = new int [(currentLineNumber+1)];
- 您创建一个本地阵列,该数组会阴影您的成员,并且只能在内部看到 if
陈述。然后,当您来到这条线时: nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)
它使用您的成员阵列不是初始化。
题
好的,我需要一个课程来重新创建Pascal三角形。我们正在使用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.NullPointerException
在 PascalTriangle.nextLine(PascalTriangle.java:29)
它的榜首 nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)
线。为什么nextlinearray会从上lineararay中获取何时设置的信息 nextLine()
方法是第一次调用?
任何帮助都将不胜感激:)谢谢。
解决方案
问题是以下:
在线中 int [] previousLineArray = new int [(currentLineNumber+1)];
- 您创建一个本地阵列,该数组会阴影您的成员,并且只能在内部看到 if
陈述。然后,当您来到这条线时: nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)
它使用您的成员阵列不是初始化。