2014-12-05 29 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); 
相關問題