我如何处理java中的数字格式异常?

时间:2014-04-03 05:16:31

标签: java applet init numberformatexception

我正在我的机器上运行一个简单的小程序。请注意,当小程序试图运行时,执行小程序时会出现“数字格式异常”错误。 以下代码显示

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运行的...谢谢..

3 个答案:

答案 0 :(得分:0)

查看Try-CatchNumberFormatExceptionnullPointerException

使用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()抛出异常的原因。