2014-12-05 55 views
0

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

主类:

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类:

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); 

    } 
} 

感谢您的帮助〜!

+0

您是否尝试过调试以查看引发异常的时间? – Robert 2014-12-05 16:35:07

+0

不,我会尝试 – Certus 2014-12-05 16:38:33

回答

2

错误是由于线路

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

代码

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

回报56-234,这不是一个整数。当它尝试将此解析为Int时,会导致NumberFormatException。 将该行更改为,

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

它将删除该错误。

+1

谢谢,修正了错误和输出是正确的〜:^) – Certus 2014-12-06 01:24:14

1

线

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

使得为 “56-234” 作为socialNum是 “456-56-234” SUB3的值。

因此,Integer.parseInt方法无法解析带有“ - ”的字符串,从而引发异常。

0

如果您正在接收NumberFormatException,那么您试图将非数字的内容转换为数字。

调试,看看你得到这些线路上的东西:

int int1 = Integer.parseInt(sub1); 
int int2 = Integer.parseInt(sub2); 
int int3 = Integer.parseInt(sub3); 
相关问题