线程“AWT-EventQueue-1”中的异常java.lang.NumberFormatException

时间:2010-05-25 01:31:28

标签: java applet drawimage

我的applet有这个问题。它只会在产生错误之前绘制一行。

这是我的代码:http://www.so.pastebin.com/RkG5YHVQ

这是错误:http://www.so.pastebin.com/z1qWpFS6

4 个答案:

答案 0 :(得分:1)

看起来dan.txt在零之前包含额外的换行符。

答案 1 :(得分:1)

只需将第38行更改为:

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

这将修剪导致代码中出错的数字字符串中的任何空格。

答案 2 :(得分:1)

看起来你的扫描仪没有使用空格作为分隔符,Integer.parseInt(src.next());在它找到的第一个换行符上窒息。

您可以尝试src.useDelimiter("[,\\s]+")之类的内容,将一个或多个空格和逗号字符的任意分组用作分隔符。

答案 3 :(得分: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.