java.lang.NumberFormatException尝试运行程序时显示错误

时间:2014-12-05 16:30:02

标签: java error-handling

该计划应该将社会安全号码加在一起。我以为我正确编写了所有代码,但是当我运行代码时,它输出了 java.lang.NumberFormatException 错误。我正在使用Eclipse,它没有显示代码的哪一行有错误,所以我不知道要修复什么。 以下是我正在使用的两类代码:

主要课程:

import static java.lang.System.*;

public class social
{
   private String socialNum;
   private int sum;

    public social()
    {
        setWord("");
    }

    public social(String soc)
    {
        setWord(soc);
    }


    public void setWord(String w)
    {
        socialNum = w;
    }

    public void chopAndAdd()
    {
        String sub1 = socialNum.substring(0, socialNum.indexOf("-"));
        String sub2 = socialNum.substring(socialNum.indexOf("-") + 1, socialNum.lastIndexOf("-"));
        String sub3 = socialNum.substring(socialNum.indexOf("-") + 1);

        int int1 = Integer.parseInt(sub1);
        int int2 = Integer.parseInt(sub2);
        int int3 = Integer.parseInt(sub3);

        sum = int1 + int2 + int3;
    }

    public String toString()
    {
        return "SS# " + socialNum + " has a total of " + sum + "\n";
    }
}

RUNNER CLASS:

import static java.lang.System.*;

public class socialrunner
{
    public static void main( String args[] )
    {
        //add test cases
        social test = new social("456-56-234");
        test.chopAndAdd();
        System.out.println(test);

        test.setWord("1-1-1");
        test.chopAndAdd();
        System.out.println(test);

        test.setWord("182-2-12");
        test.chopAndAdd();
        System.out.println(test);

        test.setWord("0-0-0");
        test.chopAndAdd();
        System.out.println(test);

    }
}

感谢您的帮助〜!

3 个答案:

答案 0 :(得分:3)

错误是由于行

String sub3 = socialNum.substring(socialNum.indexOf("-") + 1);

代码

socialNum.substring(socialNum.indexOf("-") + 1)

返回56-234,这不是整数。这会导致NumberFormatException尝试将其解析为Int。 将该行更改为,

String sub3 = socialNum.substring(socialNum.lastIndexOf("-") + 1);

它将删除错误。

答案 1 :(得分:1)

该行

String sub3 = socialNum.substring(socialNum.indexOf("-") + 1);

将sub3的值设为“56-234”,因为socialNum为“456-56-234”。

因此,Integer.parseInt方法无法解析其中带有“ - ”的String,从而抛出异常。

答案 2 :(得分:0)

如果您收到NumberFormatException,则尝试将非数字的内容转换为数字。

调试以查看您在这些方面获得的内容:

int int1 = Integer.parseInt(sub1);
int int2 = Integer.parseInt(sub2);
int int3 = Integer.parseInt(sub3);