1

奇妙な数値形式の例外が発生します。新しい Integer ラッパー オブジェクトを作成しようとしたときに奇妙な文字があるとうまくいかないことは理解していますが、入力文字列は通常の数値文字列のようです。このエラーが発生する他の理由はありますか?

systemtest:
    [junit] Running simpledb.systemtest.ScanTest
    [junit] Testsuite: simpledb.systemtest.ScanTest
    [junit] Tests run: 3, Failures: 0, Errors: 3, Time elapsed: 0.097 sec
    [junit] Tests run: 3, Failures: 0, Errors: 3, Time elapsed: 0.097 sec
    [junit] 
    [junit] Testcase: testSmall took 0.025 sec
    [junit]     Caused an ERROR
    [junit] For input string: "4386131530"
    [junit] java.lang.NumberFormatException: For input string: "4386131530"
    [junit]     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    [junit]     at java.lang.Integer.parseInt(Integer.java:484)
    [junit]     at java.lang.Integer.parseInt(Integer.java:514)
    [junit]     at simpledb.HeapPageId.hashCode(HeapPageId.java:44)

...

[junit] Testcase: testCache took 0.029 sec
    [junit]     Caused an ERROR
    [junit] For input string: "8140111260"
    [junit] java.lang.NumberFormatException: For input string: "8140111260"
    [junit]     at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    [junit]     at java.lang.Integer.parseInt(Integer.java:484)
    [junit]     at java.lang.Integer.parseInt(Integer.java:514)
    [junit]     at simpledb.HeapPageId.hashCode(HeapPageId.java:44)
    [junit]     at simpledb.BufferPool.getPage(BufferPool.java:70)
    [junit]     at simpledb.HeapFile$HFTupleIterator.retrieveTuples(HeapFile.java:200)
    [junit]     at simpledb.HeapFile$HFTupleIterator.open(HeapFile.java:141)
    [junit]     at simpledb.SeqScan.open(SeqScan.java:92)
    [junit]     at simpledb.systemtest.SystemTestUtil.matchTuples(SystemTestUtil.java:121)
    [junit]     at simpledb.systemtest.SystemTestUtil.matchTuples(SystemTestUtil.java:107)
    [junit]     at simpledb.systemtest.SystemTestUtil.matchTuples(SystemTestUtil.java:100)
    [junit]     at simpledb.systemtest.ScanTest.testCache(ScanTest.java:99)
    [junit]
4

1 に答える 1

3

数値が大きすぎて整数変数に収まりません。longただし、この大きさの整数は a に収まります。宣言をlong(または場合によってBigDecimalは ) に変更するか、より小さい数値 <= を使用しInteger.MAX_VALUEます。

于 2013-09-26T05:42:39.140 に答える