做while循环和用户输入的问题

舒姆斯基:

我试图让其中一个用户需要输入一个随机整数的程序。如果用户输入的字符串我想要一条错误消息蹦出来:“这不是一个数字”,之后重启程序,直至用户输入一个数字。我得到这个至今,我坚持。我刚刚得到一个错误信息,如果我输入一个字符串,程序崩溃。

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int number = 0;


    do {
        System.out.println("Input a number!");
        number = scanner.nextInt();
        if (!scanner.hasNextInt()) {
            System.err.println("This is not a number");
        }

    } while (!scanner.hasNextInt());

    System.out.println("You entered: " + number);

}
Sankeeth Ganeswaran:

你得到InputMismatchException时,因为如果你输入一个字符串转换成一个scanner.nextInt(),它会立即给出一个错误和它之前别的停止程序,这样就不会达到你的if语句。要解决这个问题的方法之一是改为接收用户输入的字符串,try分析它为int,并结束循环,如果它不抛出异常。这是我的实现:

public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    String input = "";
    int number = 0;
    boolean end = true;


    do {
        System.out.println("Input a number!");
        input = scanner.nextLine();
        try {
            number = Integer.parseInt(input);
            end = true;
        } catch(Exception e) {
            System.err.println("This is not a number");
            end = false;
        } 

    } while (!end);

    System.out.println("You entered: " + number);

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章