アプレットにこの問題があります。エラーが発生する前に、1 行だけ描画します。
ここに私のコードがあります: http://www.so.pastebin.com/RkG5YHVQ
エラーは次のとおりです。 http://www.so.pastebin.com/z1qWpFS6
アプレットにこの問題があります。エラーが発生する前に、1 行だけ描画します。
ここに私のコードがあります: http://www.so.pastebin.com/RkG5YHVQ
エラーは次のとおりです。 http://www.so.pastebin.com/z1qWpFS6
dan.txt
ゼロの前に余分な改行が含まれているようです。
38
行を次のように変更するだけです。
int line = Integer.parseInt(src.next().trim());
これにより、コードでエラーを引き起こしている数値文字列から空白が削除されます。
スキャナーが区切り文字として空白を使用しておらずInteger.parseInt(src.next());
、最初に見つかった改行で窒息しているようです。
src.useDelimiter("[,\\s]+")
区切り文字として 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.