2010-05-25 35 views

回答

1

只需改变线38到:

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

这将剪掉从导致错误代码中的数字串的任何空白。

+0

这个工程!谢谢!! :) – nn2 2010-05-25 01:49:14

+1

@丹没问题,很乐意帮忙。 – jjnguy 2010-05-25 01:52:24

1

貌似dan.txt包含零之前额外的换行符。

+0

这里是dan.txt 0,1,2,3,4,2,3,3, 0,1,2,3,4,2,3,3, 0,1 ,2,3,4,2,3,3, 0,1,2,3,4,2,3,3, 0,1,2,3,0,2,3,3, 0, 1,2,3,4,2,3,3, 0,1,2,3,4,2,3,3, 0,1,2,3,4,2,3,3, 我不这么认为。 :\ – nn2 2010-05-25 01:37:22

+0

是的,你是对的。 – nn2 2010-05-25 01:50:13

1

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

您可以尝试使用类似src.useDelimiter("[,\\s]+")的东西来使用任何一个或多个空格和逗号字符的分组作为分隔符。

+0

这也适用!得到爱正则表达式。 – nn2 2010-05-25 01:49:44

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. 
+0

明白了,谢谢。 – nn2 2010-05-25 01:51:43

相关问题