“线程中的异常”;AWT-EventQueue-1“;java.lang.NumberFormatException
我的小程序有这个问题。在产生错误之前,它只绘制一行 这是我的密码:“线程中的异常”;AWT-EventQueue-1“;java.lang.NumberFormatException,java,applet,drawimage,Java,Applet,Drawimage,我的小程序有这个问题。在产生错误之前,它只绘制一行 这是我的密码: 错误如下:看起来像是dan.txt在零之前包含一个额外的换行符。看起来像dan.txt在零之前包含一个额外的换行符。只需将行38更改为: int line = Integer.parseInt(src.next().trim()); 这将删除导致代码错误的数字字符串中的任何空白。只需将第38行更改为: int line = Integer.parseInt(src.next().trim()); 这将从导致代码中出现错误的数
错误如下:看起来像是
dan.txt
在零之前包含一个额外的换行符。看起来像dan.txt
在零之前包含一个额外的换行符。只需将行38
更改为:
int line = Integer.parseInt(src.next().trim());
这将删除导致代码错误的数字字符串中的任何空白。只需将第38行更改为:
int line = Integer.parseInt(src.next().trim());
这将从导致代码中出现错误的数字字符串中删除任何空格。看起来您的扫描仪没有使用空格作为分隔符,并且
Integer.parseInt(src.next())代码>在它找到的第一个换行符上阻塞
您可以尝试类似于src.useDelimiter(“[,\\s]+”)
的方法来使用一个或多个空格和逗号字符的任何分组作为分隔符。看起来您的扫描仪没有使用空格作为分隔符,Integer.parseInt(src.next())代码>在它找到的第一个换行符上阻塞
您可以尝试使用类似于src.useDelimiter(“[,\\s]+”)
的方法来使用一个或多个空格和逗号字符的任何分组作为分隔符。以下是调试此问题的方法:
自下而上阅读堆栈跟踪,注意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.
线程“AWT-EventQueue-1”java.lang.NumberFormatException中的异常:用于inpu
t字符串:“
0"
在java.lang.NumberFormatException.forInputString(NumberFormatException。
爪哇:48)
位于java.lang.Integer.parseInt(Integer.java:449)
java.lang.Integer.parseInt处的Tile0(Integer.java:499)
在Inventory.paint(Inventory.java:51)中,您可以开始调试这个问题:
自下而上阅读堆栈跟踪,注意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.
线程“AWT-EventQueue-1”java.lang.NumberFormatException中的异常:用于inpu
t字符串:“
0"
在java.lang.NumberFormatException.forInputString(NumberFormatException。
爪哇:48)
位于java.lang.Integer.parseInt(Integer.java:449)
java.lang.Integer.parseInt处的Tile0(Integer.java:499)
在Inventory.paint(Inventory.java:51)这里是dan.txt 0,1,2,3,4,2,3,0,1,2,3,4,2,3,0,1,2,3,3,3,3,0,1,2,3,4,2,2,3,3,0,1,3,3,3,0,1,2,3,3,3,0,1,2,3,3,3,3,0,1,2,3,3,3,3,我不这么认为\这里是dan.txt 0,1,2,3,4,2,3,3,0,1,2,3,4,2,3,3,0,1,2,3,3,0,1,2,3,4,2,2,3,3,0,1,2,3,0,2,3,3,0,1,2,3,2,3,3,0,1,2,4,2,3,3,3,我不这么认为\@丹:没问题,很乐意帮忙。@丹:没问题,很乐意帮忙。