私のプログラムは、パスカルの三角形を表示します。計算や表示が可能な三角形の部分を拡大するために、私はプリミティブ型の代わりにBigIntegerを使ってコードを書き直しました。BigIntegerを使用しているプログラムで何も表示されないのはなぜですか?
import java.math.BigInteger;
public class ptrig {
public static void main(String args[]) {
BigInteger no = BigInteger.valueOf(5);
// Creating the array
String doubledim[][] = new String[no.intValue()][];
BigInteger k;
for (k = BigInteger.ZERO; k.compareTo(no) < 0; k.add(BigInteger.ONE)) {
doubledim[k.intValue()] = new String[k.intValue() + BigInteger.ONE.intValue()];
}
// Assigning values
BigInteger i, j, p, n;
BigInteger l = BigInteger.ONE;
for (i = BigInteger.ZERO; i.compareTo(no) < 0; i.add(BigInteger.ONE)) {
for (j = BigInteger.ZERO; j.compareTo(i.add(BigInteger.ONE)) < 0; j.add(BigInteger.ONE)) {
BigInteger m = i.subtract(j);
if (j.compareTo(m) > 0) {
for (p = BigInteger.ZERO; p.compareTo(m) < 0; p = p.add(BigInteger.ONE)) {
n = i.subtract(p);
l = l.multiply(n);
}
doubledim[i.intValue()][j.intValue()] = l.divide(factorial.factmet(m)).toString();
l = BigInteger.ONE;
}
if (m.compareTo(j) > 0) {
for (p = BigInteger.ZERO; p.compareTo(j) < 0; p = p.add(BigInteger.ONE)) {
n = i.add(p.add(BigInteger.ONE)).subtract(j);
l = l.multiply(n);
}
doubledim[i.intValue()][j.intValue()] = l.divide(factorial.factmet(j)).toString();
l = BigInteger.ONE;
}
if (m.compareTo(j) == 0) {
for (p = BigInteger.ZERO; p.compareTo(j) < 0; p = p.add(BigInteger.ONE)) {
n = i.subtract(p);
l = l.multiply(n);
}
doubledim[i.intValue()][j.intValue()] = l.divide(factorial.factmet(j)).toString();
l = BigInteger.ONE;
}
}
}
// Printing
for (i = BigInteger.ZERO; i.compareTo(no) < 0; i.add(BigInteger.ONE)) {
for (j = BigInteger.ZERO; j.compareTo(i.add(BigInteger.ONE)) < 0; j.add(BigInteger.ONE)) {
System.out.print(doubledim[i.intValue()][j.intValue()] + " ");
}
System.out.println();
}
}
}
問題は、それは何も表示されませんです:
は、ここでは、コードです。私はスタックオーバーフローを読んだ。私は配列の値を文字列に変換して表示する必要があるので、私はそうした。私もSystem.out.println
のステートメントをチェックしました - 彼らはうまくいくようです。エラーは継続されました。
プリミティブ型の以前のバージョンでは、アルゴリズム自体が正常に機能しました。
ここでは何が違うのですか?私はウェブ上で答えを見つけるために最善を尽くした、私はできなかった。ありがとう。
デバッガのコードをステップ実行して、期待したことができない箇所を確認することをお勧めします。 –
'j Andreas
ええ、それは同じです。私は最初にそれを書いたときにそれをi + 1と考えていましたが、その後は変わっていませんでした。ありがとう。 – user6232516