try catch赋值问题

1mrurvl1  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(410)

当我输入int第一个程序检查并赋值但不打印时,下一个int我输入它打印但输入第一个值。如果value是string,则再次询问,但不将值赋给number。如何解决这个问题?先谢谢你。

public static void main(String[] args) {

    int number = 0;

    Scanner kb = new Scanner(System.in);

    do {
        try {
            System.out.println("Enter a number: ");
            number = kb.nextInt();
        } catch (Exception e) {
            System.out.println("Not a number!");
            kb.nextLine();

        }

    } while (!kb.hasNextInt());
    System.out.println(number);

}

输出

Enter a number: ab
Not a number!
5
Number: 0
qyyhg6bp

qyyhg6bp1#

不要把nextline和nextanything混为一谈。如果你想读整行,使用 .next() ,并更新扫描仪的分隔符: scanner.useDelimiter("\r?\n"); -按你的方式操作意味着,如果用户使用了你键盘上最大的键,你的应用程序就会崩溃。
你应该把它放在一个实用的方法里。
不要使用 .hasNextInt() 在你的情况下。如果用户输入非数字,则返回false。如果输入正确的话,就把它变成真的,然后跳出循环。请注意 kb.hasNextInt 将冻结(等待)直到用户输入某个内容。毕竟,只要用户没有输入其他令牌,scanner怎么可能告诉您它是否是int?

相关问题