繁体   English   中英

如何让用户输入回前一个问题

[英]How to let the user input back to the former question

我编写了一个代码,让用户先输入游轮ID,然后输入船名。 首先,我想检测用户是否输入了整数类型,否则,用户必须再次输入第一个问题。

但是在我的代码中,它将直接打印第二个问题,而不是返回第一个问题并再次询问。 同样,对于第二个问题,我也希望它返回并请用户再次输入是否输入错误

请帮我。 谢谢!!

  try{
       System.out.println("Input Cruise ID:");
       sc1 = sc.nextInt();
   }catch(Exception e){
       System.out.println("Please Enter integer:");
       sc.nextLine();
   }

   System.out.println("Input ship name :");
   try{
       sc2 = sc.next();
   }catch(Exception e){
       if( sc2 != "Sydney1" || sc2 !="Melmone1"){
           System.out.println("Oops!! We don't have this ship!! Please enter the ship name : Sydney1 or Melbone1");
       }
   }

我编写了一个代码,让用户先输入游轮ID,然后输入船名。 首先,我想检测用户是否输入了整数类型,否则,用户必须再次输入第一个问题。

您需要的是输入验证。 如果输入不是整数,则try-catch块本身不会创建无限循环来提示用户。 您需要的是while loop

您可以使用以下do-while循环,以便在执行检查之前先运行它:

String input = "";                       //just for receiving inputs

do{
    System.out.println("Input Cruise ID:");
    input = sc.nextInt();
}while(!input.matches("[0-9]+"));        //repeat if input does not contain only numbers

int cruiseID = Integer.parseInt(input);  //actual curiseID in integer

要对第二个输入(即您的shipName)执行验证,您需要另一个while循环,其中包含输入提示。

try-catch块主要用于处理特殊情况。 尽量不要将其误用作实现的控制语句。

您可以在while循环本身中添加更多检查。 例如,检查数字是负数还是零等。例如

while (true) {
        try {
            System.out.println("Input Cruise ID:");
            cruiseId = sc.nextInt();
            if(cruiseId <=0){
                System.out.println("Please Enter integer:");
                sc.nextLine();
            }
            break; // break when no exception happens till here.
        } catch (Exception e) {
            System.out.println("Please Enter integer:");
            sc.nextLine();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM