该计划应该将社会安全号码加在一起。我以为我正确编写了所有代码,但是当我运行代码时,它输出了 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);
}
}
感谢您的帮助〜!
答案 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);