急请教一个java程序题目---关于try-catch的

来源:百度知道 编辑:UC知道 时间:2024/07/07 16:50:03
private static int i,j,con,con1,con2,sum;
public static void main(String[] args) {
JOptionPane.showMessageDialog(null,"现在进行第一次调用,传参");
add("123","321");
JOptionPane.showMessageDialog(null,"现在进行第二次调用,传参");
add("abc","123");
JOptionPane.showMessageDialog(null,"现在进行第三次调用,传参");
add("abc","abd");
}

public static void add(String s1,String s2){
try{
con = 1;//记数
i = Integer.parseInt(s1);
con = 2;//记数
j = Integer.parseInt(s2);
JOptionPane.showMessageDialog(null, "结果为:"+(i+j));
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(null,"第"+con+"个参数有错");
System.out.println("");
e1.printStackTrace();
}
finally{
JOptionPane.showMessageDialog(null,"这是用了finally的效果,所以每次

1将try catch 加在main中的每的add()调用上,也就是
try{
add("abc","123");
catch(..)
{..}
2将编写的add()方法,将Exception抛出throws NumberFormatException

应该这样,不过很麻烦!

try-catch的一个特点就是当发现一个错误的时候,错误后面的代码都不执行,直接跳到catch里面执行这里的代码,在执行finally的代码。
如果你只是想判断数据类型的错误,你可以在加个判断的条件,判断当第一个参数是错误的时候,第二个参数不调用JOptionPane.showMessageDialog(null, "结果为:"+(i+j));
可以使用2个try-catch。
如果你只是想判断数据类型是否是整型,在不考虑其他的东西的情况,你可以选择用if(i instanceof int) 判断数据类型来写,要方便很多。

问题原因:两个try块的时候,在第二次调用时参数本来是错的,但是它也要输出结果246原因在于你的i和j是类的成员变量,你在执行第二次调用的时候i的值就已经是123了解决办法:要么在add方法开始的时候就吧i和j清空:i=0;j=0;第二种方式就是吧i和j定义成add方法的局部变量