键入字母而不是数字时程序崩溃,如何保护此程序?

时间:2017-07-31 20:44:38

标签: java debugging

public static void main(String args[]) { /* problem*/
        Scanner scan=new Scanner (System.in);       
        int a; // problem//
        System.out.println("a nedir");
        a=scan.nextInt();
}

2 个答案:

答案 0 :(得分:1)

据我所知,当输入不是整数时,程序停止。所以这里是简单的解决方案:使用方法nextLine()而不是nextInt()。检查输入是否不是数字捕获异常并继续,除非你得到一个数字。

        Scanner scanner = new Scanner(System.in);
        String input = scanner.nextLine();
        int number = 0;

        while (true) {
            try {
                number = Integer.parseInt(input);
                return;
            } catch (Exception e) {
                System.out.println("Invalid number");
            }
            input = scanner.nextLine();
        }

答案 1 :(得分:0)

如果没有找到整数,

Scanner.nextInt()会抛出异常。您需要捕获异常并处理它,或使用Scanner.hasNextInt()

阻止它发生。

例如:

public static void main(String args[]) {
    Scanner scan = new Scanner(System.in);       
    int a;
    System.out.println("a nedir");
    if(scan.hasNextInt()){
         a = scan.nextInt();
    }
    else{
        //Add code to handle invalid input here
        //ie. propmt the user to renter input or something like that
    }
}

如果你将else块留空,它仍然可以工作,但输入非数字输入时不会发生任何事情。