Java错误的用户输入循环直到正确

时间:2016-10-06 11:26:12

标签: java if-statement input validating

感谢您的时间。

我在验证程序时遇到问题。我尝试过使用While / Switch但它们都是一样的。问题是当用户输入错误的输入例如5时,它显示错误,然后它让他们再次输入,但如果他们再次输入错误的数字,程序不会验证...我绝对可以复制代码一次又一次地在其中,但应该有一个更简单的方法。

希望你明白我想要实现的目标:D

我怎么能这样做它是一个继续循环?谢谢!

//选择合适的房间     public static int rooms(){

    int room;

    // Creating a new keyboard input
    Scanner scanner = new Scanner(System.in);
    // Displaying a message on the screen
    System.out.println("What room are you in? ");
    // Input
    room = scanner.nextInt();

    if (room==1) {

        roomOne();

    } else if (room==2) {

        roomTwo();

    } else if (room==3) {

        roomThree();

    } else if (room==4) {

        roomFour();

    } else {

        System.out.println("Wrong room number, please enter the room number.");
        room = scanner.nextInt();
    }


    //System.out.println("Sorry but you entered the wrong room number " + room + " Enter the correct room number 1-4 ");    


    return room;

} // End Rooms

3 个答案:

答案 0 :(得分:0)

while (true) {
    int room = scanner.nextInt();
    if(room < 1 || room > 4) {
        System.out.println("Wrong room number, please enter the room number.");
        continue;
    }
    break;
}
if (room == 1) 
    roomOne();
else if (room == 2) 
    roomTwo();
else if (room == 3) 
    roomThree();
else if (room == 4) 
    roomFour();

希望它有所帮助,但是你应该阅读更多关于循环的内容。

答案 1 :(得分:0)

你正在寻找一个像这样的while循环。

我使用do ... while执行行至少一次

方法检查值并在不正确的情况下打印消息。返回false将阻止代码退出循环并再次读取。

{
     // Creating a new keyboard input
    Scanner scanner = new Scanner(System.in);


   int room;   
   do {
      // Displaying a message on the screen
      System.out.println("What room are you in? ");
      room = scanner.nextInt();
   } while( !isValid(room) );

   ... //if else or switch
}

private boolean isValid(int room){
   if(room > 4 || room  < 1){
       System.out.println("Try again ;)" );
       return false;
   }  else return true;
}

这是一个快速的代码注释甚至测试。

答案 2 :(得分:-1)

这是你应该如何为输入清理设置一个循环:

  1. 定义布尔值并指定true或false值
  2. 使用布尔值
  3. 运行while循环
  4. 输入&#34; clean&#34;时,将布尔值设置为true