在java上退出while循环

时间:2017-04-17 04:52:39

标签: java while-loop

我正在尝试创建一个程序,我使用getInt方法确保用户输入正数。到目前为止我有这个

public class Binary {
  public static void main(String [ ] args) {
   Scanner CONSOLE = new Scanner(System.in); 
   int decimal=getInt(CONSOLE, "Enter a positive integer: ");

   } 

  public static int getInt(Scanner CONSOLE, String prompt) {                      
   System.out.print(prompt);  
   while (!CONSOLE.hasNextInt()) {
    CONSOLE.next();                          
    System.out.println("Not an integer; try again.");                          
    System.out.println(prompt);
   }
   int posInt=CONSOLE.nextInt();
   while (posInt <= 0) {
    System.out.println("Not a positive integer; try again.");
    CONSOLE.next();
    System.out.println(prompt);
   }  
  return CONSOLE.nextInt();
  }  

}    

出现问题,当用户输入正数时,它仍然忽略输入并要求用户再次输入正整数。我想我只是没有正确退出循环,但我不确定如何。

2 个答案:

答案 0 :(得分:2)

您的问题是return CONSOLE.nextInt();

在您的方法结束时,您正在呼叫CONSOLE.nextInt(),再次请求输入。

返回posInt,你就没事了。

祝你好运,HTH

答案 1 :(得分:0)

像其他人一样,你可以回复posInt而你应该没事 但我对您的getInt方法有一些建议:

 public static int getInt(Scanner CONSOLE, String prompt) {
    //initialize vars
    boolean valid = false;
    int posInt = 0;
    //while the input is not valid, loop over the evaluation
    while(!valid){
        System.out.print(prompt);
        if (!CONSOLE.hasNextInt()) {
            CONSOLE.next();
            System.out.println("Not an integer; try again.");
            //"continue" stops the loop here and starts it from the beginning
            continue;
        }
        posInt=CONSOLE.nextInt();
        if (posInt > 0) {
            //valid = true will get us out of the loop
            valid = true;

        }else {
            System.out.println("Not a positive integer; try again.");
        }

    }
    return posInt;
}

如果之前的输入无效,此代码将从头开始重新评估输入 在您的代码中,如果输入负数,则会提示您重新输入数字 但由于您已经在while (posInt <= 0)循环中,因此如果您确实输入了有效输入,则不会重新检查。

我提供的代码从头开始重新评估下一个输入,直到找到有效。