1
System.out.println("How long is the word you would like to guess?");
    while (goodInput==false)
            {
                try
                {
                    wordSize=scan.nextInt();
                    goodInput=true;
                }
                catch(InputMismatchException ime)
                {
                    System.out.println("Thats not a number! Try again");
                }
            }

输入错误类型的输入后,控制台在无限循环中重复“那不是数字...”。

*编辑

我试过了

while(goodInput==false)
        {
            if (scan.hasNextInt())
            {
                wordSize=scan.nextInt();
                goodInput=true;
            }
            else
            {
                System.out.println("Thats not a number! Try again");
            }
        }

这也会产生相同的错误

4

2 回答 2

3
 while (goodInput==false) {
      System.out.println("How long is the word you would like to guess?");
      if (scan.hasNextInt()) {
        wordSize=scan.nextInt();
        goodInput=true;
      }
      else scan.next();
  }
于 2012-12-09T18:07:19.630 回答
3

如果提供了非整数,则永远不会消耗输入,因此输入会一次又一次地传递,从而导致无限循环。你可以使用:

scan.nextLine();

在您的异常块中,但最好使用:

while (scan.hasNextInt() && !goodInput) {
于 2012-12-09T18:03:48.180 回答