我正在我的机器上运行一个简单的小程序。请注意,当小程序试图运行时,执行小程序时会出现“数字格式异常”错误。 以下代码显示
import java.util.*;
import java.awt.*;
import java.applet.*;
<html>
<body>
<applet code="s09_03.class" width=400 height=400>
</applet>
</body>
</html>
public class s09_03 extends Applet
{
GregorianCalendar cal=new GregorianCalendar();
String s,s1,s2,s3,s4;
int a=0,b=0,c=0,d=0;
public void start(){s=getParameter("fg");
s1=getParameter("as");
s2=getParameter("as1");
s3=getParameter("as2");
s4=getParameter("as3");
a=Integer.parseInt(s1);
b=Integer.parseInt(s2);
c=Integer.parseInt(s3);
d=Integer.parseInt(s4);
}
public void init()
{
}
public void paint(Graphics g)
{
if(s.equals("red"))g.setColor(Color.red);g.drawRect(a,b,c,d);
g.drawString("Color = "+"",25,25);
g.drawString("Calendar is"+cal.DATE+"/"+cal.MONTH+"/"+cal.YEAR,34,36);
}
}
使用的命令是
javac s09_03.java
and
appletviewer s09_03.java
终端输出:
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:443)
at java.lang.Integer.parseInt(Integer.java:514)
at s09_03.start(s09_03.java:22)
at sun.applet.AppletPanel.run(AppletPanel.java:477)
at java.lang.Thread.run(Thread.java:701).
所以我的问题是为什么会出现这个错误以及它何时会发生?还建议在代码中进行一些必要的更改,以便代码运行时没有任何错误。注意代码是通过linux运行的...谢谢..
〜
答案 0 :(得分:0)
查看Try-Catch,NumberFormatException,nullPointerException
使用try catch
来处理异常
试试这个,因为你的值为null
。所以检查传递值不应该为空
try
{
a = Integer.parseInt(s1 != null ? s1 : "0");
b = Integer.parseInt(s2 != null ? s2 : "0");
c = Integer.parseInt(s3 != null ? s3 : "0");
d = Integer.parseInt(s4 != null ? s4 : "0");
}
catch(NumberFormatException ex)
{
System.out.println("Exception : "+ex);
}
还有变量s is also null
,因此您获得了NullPointerException
if (s != null && s.equals("red"))
而不是
if (s.equals("red"))
答案 1 :(得分:0)
抓住异常并处理它
try{
a=Integer.parseInt(s1);
b=Integer.parseInt(s2);
c=Integer.parseInt(s3);
d=Integer.parseInt(s4);
} catch(NumberFormatException e){
//exceptionhandling
}
答案 2 :(得分:0)
只需捕获catch块中的异常并采取相应的操作。
try{
// some code that may throw NumberFormatException
}catch(NumberFormatException e){
// when number format exception occur, take appropriate action
}
问题的根本原因:
As exception says clearly
java.lang.NumberFormatException: null
at java.lang.Integer.parseInt(Integer.java:443)
您正在尝试将null的String值解析为Integer,这就是parseInt()抛出异常的原因。