Java NumberFormatException处理
有人能解释一下为什么add()方法返回0而不是4吗? 如果提供了“无效”字符串编号(例如4),我尝试使用int 0。 对于字符串参数3,4/3,4/3,4/我得到了正确的结果,但是对于3,4,我没有得到正确的结果 你能告诉我我做错了什么吗? 谢谢Java NumberFormatException处理,java,Java,有人能解释一下为什么add()方法返回0而不是4吗? 如果提供了“无效”字符串编号(例如4),我尝试使用int 0。 对于字符串参数3,4/3,4/3,4/我得到了正确的结果,但是对于3,4,我没有得到正确的结果 你能告诉我我做错了什么吗? 谢谢 public class Numbers2 { public static void main(String[] args) { System.out.println(add("d","4")); } // main
public class Numbers2
{
public static void main(String[] args) {
System.out.println(add("d","4"));
} // main() method
public static int add(String a, String b)
{
int x = 0;
int y = 0;
try{
x = Integer.parseInt(a);
y = Integer.parseInt(b);
System.out.println("No exception: " + (x+y));
return x + y;
}
catch (NumberFormatException e){
if(x != (int) x ){
x = 0;
}
if(y != (int) x ){
y = 0;
}
return x + y;
}
} // add() method
} // class
因为第二个参数是“d”,所以您总是会遇到异常情况。这里,x=y=0
这里的If语句不会做任何事情,因为(x==(int)x)总是在x是int时执行,而(y==(int)x)都是0,所以这两个块都不会执行
因此,x+y将始终=0。问题是,行
y=Integer.parseInt(b)当您将“d”
作为非整数的第一个参数传递时,x=integer.parseInt(a)行没有机会执行代码>导致异常,并且x
和y
都保持为0
您可以通过对以下两种情况分别使用try/catch来解决此问题:
int x = 0; //x is 0 by default
int y = 0; //y is 0 by default
try {
x = Integer.parseInt(a); //x will remain 0 in case of exception
}
catch (NumberFormatException e) {
e.printStackTrace();
}
try {
y = Integer.parseInt(b); //y will remain 0 in case of exception
}
catch(NumberFormatException e) {
e.printStackTrace();
}
return x + y; //return the sum
若使用错误的Format参数作为第一个参数,那个么在语句处会发生异常
x = Integer.parseInt(a);
线路
y = Integer.parseInt(a);
在这种情况下永远不会执行,所以对每个语句使用不同的try-catch块。就是这样。。。这就是我一直在寻找的答案。。。非常感谢!