2010-05-25 69 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

相關問題