我的applet中存在這個問題。它只會在產生錯誤之前繪製一行。線程「AWT-EventQueue-1」中的異常java.lang.NumberFormatException
這裏是我的代碼:http://www.so.pastebin.com/RkG5YHVQ
這裏的錯誤:http://www.so.pastebin.com/z1qWpFS6
我的applet中存在這個問題。它只會在產生錯誤之前繪製一行。線程「AWT-EventQueue-1」中的異常java.lang.NumberFormatException
這裏是我的代碼:http://www.so.pastebin.com/RkG5YHVQ
這裏的錯誤:http://www.so.pastebin.com/z1qWpFS6
只需改變線38
到:
int line = Integer.parseInt(src.next().trim());
這將剪掉從導致錯誤代碼中的數字串的任何空白。
看起來您的掃描儀沒有使用空格作爲分隔符,並且Integer.parseInt(src.next());
對找到的第一個換行符感到窒息。
您可以嘗試使用類似src.useDelimiter("[,\\s]+")
的東西來使用任何一個或多個空格和逗號字符的分組作爲分隔符。
這也適用!得到愛正則表達式。 – nn2 2010-05-25 01:49:44
這裏是你如何開始調試這個問題:
通讀堆棧跟蹤底部向上,並注意您的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.
明白了,謝謝。 – nn2 2010-05-25 01:51:43
這個工程!謝謝!! :) – nn2 2010-05-25 01:49:14
@丹沒問題,很樂意幫忙。 – jjnguy 2010-05-25 01:52:24