1

アプレットにこの問題があります。エラーが発生する前に、1 行だけ描画します。

ここに私のコードがあります: http://www.so.pastebin.com/RkG5YHVQ

エラーは次のとおりです。 http://www.so.pastebin.com/z1qWpFS6

4

4 に答える 4

1

dan.txtゼロの前に余分な改行が含まれているようです。

于 2010-05-25T01:36:09.960 に答える
1

38行を次のように変更するだけです。

int line = Integer.parseInt(src.next().trim());

これにより、コードでエラーを引き起こしている数値文字列から空白が削除されます。

于 2010-05-25T01:40:07.897 に答える
1

スキャナーが区切り文字として空白を使用しておらずInteger.parseInt(src.next());、最初に見つかった改行で窒息しているようです。

src.useDelimiter("[,\\s]+")区切り文字として 1 つ以上の空白文字とコンマ文字のグループを使用するようなものを試すことができます。

于 2010-05-25T01:40:13.197 に答える
1

この問題のデバッグを開始する方法は次のとおりです。

スタック トレースを下から順に読んで、Java ソース ファイルが表示され始める場所に注目してください。あなたの場合:

Inventory.paint(Inventory.java:51)

これで、いくつかの異なる方法を使用してこの行のデバッグを開始できます。推奨される方法は、プログラムの実行中のインスタンスにデバッガーを接続し、この行で何が起こるかを確認することです。それができない場合は、try catch ブロックを追加して、そのコード行の周りの例外をキャプチャし、実際の値と期待値を出力します。

Exception in thread "AWT-EventQueue-1" java.lang.NumberFormatException: For inpu
t string: "
0"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.
java:48)
        at java.lang.Integer.parseInt(Integer.java:449)
Tile0   at java.lang.Integer.parseInt(Integer.java:499)

        at Inventory.paint(Inventory.java:51)  <===== Your code shows up!
        at sun.awt.RepaintArea.paintComponent(RepaintArea.java:248)
        at sun.awt.RepaintArea.paint(RepaintArea.java:224)
        at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:306)
        at java.awt.Component.dispatchEventImpl(Component.java:4706)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
Row: 1 successfully painted.
于 2010-05-25T01:40:44.430 に答える