問題は次のとおりです。
どこにあるか int [] previousLineArray = new int [(currentLineNumber+1)];
- あなたはあなたのメンバーを影にして、内側にのみ見えるローカル配列を作成します if
声明。次に、この行に来たとき: nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)
INITではなかったメンバーアレイを使用します。
質問
OK、パスカルトライアングルを再作成するクラスが必要です。 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;
}
}
}
クラスはコンパイルされますが、私が3行目に到達すると、読む必要があります 1 2 1
, 、私は取得します java.lang.NullPointerException
で PascalTriangle.nextLine(PascalTriangle.java:29)
それはハイリストになります nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)
ライン。 nextlinearrayは、以前のLinearrayから情報を取得するのはなぜですか。 nextLine()
メソッドが初めて呼び出されますか?
どんな助けも感謝します:)ありがとう。
解決
問題は次のとおりです。
どこにあるか int [] previousLineArray = new int [(currentLineNumber+1)];
- あなたはあなたのメンバーを影にして、内側にのみ見えるローカル配列を作成します if
声明。次に、この行に来たとき: nextLineArray[(nextLineCount)] = (previousLineArray[(nextLineCount-1)
INITではなかったメンバーアレイを使用します。