4

そのため、BigInteger を使用してバイナリ文字列を数値表現に変換していたところ、奇妙なエラーが発生してしまいました。

この行のコードが実行されると、NumberFormatException が発生します。

BigInteger temp = new BigInteger(strbuf.toString(), 2);

ここで、strbuf には次の文字列があります (0 と 1 のみで構成されています)。

"1001110000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010"

最初は、文字列または値が大きすぎるのではないかと思いましたが、次のスタンドアロン Java クラスは問題なくコンパイルおよび実行されます。

import java.math.BigInteger;

class test {
    public static void main(String[] argv) {
        StringBuffer strbuf = new StringBuffer("1001110000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010");
        BigInteger big = new BigInteger(strbuf.toString(), 2);
        System.out.println(big);
    }
}

ここに欠けているものはありますか?明らかに同じ値を持つ同じコードがメイン アプリケーションで実行できないのはなぜですか?

例外メッセージ:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1001110000000100"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.math.BigInteger.<init>(Unknown Source)
    at org.app.star.pad(star.pad:42)
4

1 に答える 1

0

j2ee5に関する私のサファリの本によると、値をint型のラッパーであるjava.lang.Integerに変換する試みがあります(暗黙的に提案されています)。それは問題。例外の巻き戻しの2番目の「at」行に注意してください...

これは最適化の問題である可能性があります。カットダウンデモプログラムではなく、メインプログラムの最適化をオフにします。

心から、

ArrowInTree

于 2012-12-06T22:56:22.497 に答える