public static void main(String args[]) {
        String str[] = new String[3];
        Scanner input = new Scanner(System.in);
        str[0] = input.next();
        str[1] = input.next();
        str[2] = input.next();
        try {
            int a, b;
            a = Integer.parseInt(str[0]);
            b = Integer.parseInt(str[2]);
            if (str[1].equals("+")) {
                System.out.println(a + " + " + b + " = " + (a + b));
            } else if (str[1].equals("-")) {
                System.out.println(a + " - " + b + " = " + (a - b));
            } else if (str[1].equals("*")) {
                System.out.println(a + " * " + b + " = " + (a * b));
            } else if (str[1].equals("/")) {
                System.out.println(a + " / " + b + " = " + (a / b));
            } else {
                System.err.println("输入符错误!!!");
            }
        } catch (NumberFormatException e) {
            for (int i = 0; i < str.length; i++) {
                if (str[0].charAt(i) >= '0' && str[0].charAt(i) <= '9') {
                } else {
                    System.out.println("Wrong " + str[0]);
                }
                if (str[2].charAt(i) >= '0' && str[2].charAt(i) <= '9') {
                } else {
                    System.out.println("Wrong " + str[2]);
                }
            }
        } 
}为什么这样子没法捕捉到异常,还是继续弹出错误信息呢?

解决方案 »

  1.   

     catch (NumberFormatException e) {
                for (int i = 0; i < str[0].length(); i++) {
                    if (str[0].charAt(i) >= '0' && str[0].charAt(i) <= '9') {
                    } else {
                        System.out.println("Wrong " + str[0]);
                    }
                }
                for(int i=0;i<str[2].length();i++){
                    if (str[2].charAt(i) >= '0' && str[2].charAt(i) <= '9') {
                    } else {
                        System.out.println("Wrong " + str[2]);
                    }
                }
            }