有一个循环的难以忍受的艰难时期

时间:2016-02-06 01:23:11

标签: java loops

我已经复制了下面的部分说明,我可以自己编写几乎每个部分的代码,但是将控制流程放在一起让我对自己的能力产生了很大的怀疑。

我最大的问题之一是int gameChanger。我应该立即验证它是否是整数,如果不是则循环回来。但是我也应该检查一下,看看是否有人输入"退出"。但我的扫描仪实例的输入变量是一个整数...所以我很难过。一旦输入被读入,我可以使用try catch来检查missmatchexception,但这并不能解决退出问题,也不能提出可靠的逻辑来使try catch循环回来,如果它确实不是整数。我想做一个while循环,但我没有让它工作。

说明:

2 个答案:

答案 0 :(得分:1)

在尝试使用输入之前,您可以输入数字。

int num;
while (true) {
   if (scanner.hasNextInt()) {
       num = scanner.nextInt();
       break;

   } else {
       // read whatever is there instead.
       String line = scanner.nextLine();
       if (line.equals("exit"))
            System.exit(0);
       System.out.println("Please enter a number");
   }
}

System.out.println("Number entered " + num);

答案 1 :(得分:0)

这可以完成工作。尝试一下。

import java.util.Scanner;
public class MyCode
{
   public static void main(String[] args)
   {
      String gameInput = ".";
      int gameNumber = 0;
      boolean inputLoop = true;

      Scanner input = new Scanner(System.in);

      while(inputLoop == true)
      {
         try
         {
            System.out.print("Please enter a valid game number: ");
            gameInput = input.next();

            if(gameInput.equals("exit"))
            {
               System.out.println("Program will now end. Goodbye.");
               inputLoop = false;
               input.close();
            }

            gameNumber = Integer.parseInt(gameInput);

            if(gameNumber >= 20001 && gameNumber <= 21230)
            {  
               System.out.println("You have inputted a valid game number.");
               inputLoop = false;
               input.close();
            }
         }
         catch(NumberFormatException e)
         {
            if(!gameInput.equals("exit"))
            {
               System.err.println("Invalid game number. Please try again.");
            }
         }
      }
   }
}