大学任务的异常处理

时间:2017-03-16 16:55:49

标签: java

我现在正在为Exceptions做大学任务。我写了一些代码,但它没有用,只是想知道是否有人可以找到我出错的地方?任何帮助将不胜感激。

我已经编写了一个专门用于处理InputMismatchException的类,但是,当我在数组中输入double而不是整数时,程序仍然会崩溃而不是像我想要的那样处理异常。 / p>

感谢。

public class Lab8 {
    public static void main(String[] args) {
        ArrayList<Integer> a = new ArrayList<Integer>();
        Scanner s = new Scanner(System.in);
        boolean x = true;
        while (x == true) {
            try {
                System.out.println("Enter the next integer: ");
                /*Autoboxing takes place here. The primitive type "int" taken in from the
                user is converted to an Integer object.*/
                Integer i = s.nextInt();
                a.add(i);
            } catch (InputMismatchException e) {
                System.out.println("You must enter an integer.");
            }

            System.out.println("Would you like to enter another integer? (Y/N): ");
            char y_n = s.next().charAt(0);
            if (y_n == 'Y') {
                x = true;
            } else {
                x = false;
            }
        }
        for (int i = 0; i < a.size(); i++) {
            System.out.println(a.get(i));
        }

    }
}

2 个答案:

答案 0 :(得分:0)

添加

s = new Scanner(System.in);
像这样

System.out.println("Would you like to enter another integer? (Y/N): ");
s = new Scanner(System.in);
char y_n = s.next().charAt(0);

答案 1 :(得分:0)

由于Scanner无法从输入中提取int,因此它仍然卡在那里。在寻找新的东西之前,你需要清除输入;否则next.charAt(0)将成为双倍的第一个数字(在您的示例中)。在catch子句中,添加

s.next();