退出java上的while循环

退出java上的while循环,java,while-loop,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 get

我正在尝试创建一个程序,使用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();
  }  

}    
公共类二进制文件{
公共静态void main(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
int decimal=getInt(控制台,“输入正整数:”);
} 
公共静态int getInt(扫描仪控制台,字符串提示符){
系统输出打印(提示);
而(!CONSOLE.hasnetint()){
CONSOLE.next();
System.out.println(“不是整数;请重试。”);
System.out.println(提示);
}
int posInt=CONSOLE.nextInt();

而(posInt您的问题是
返回控制台.nextInt();

在方法的末尾,您正在调用
CONSOLE.nextInt()
,它再次请求输入

返回
posInt
,您就没事了


祝你好运,你的问题是返回控制台.nextInt();

在方法的末尾,您正在调用
CONSOLE.nextInt()
,它再次请求输入

返回
posInt
,您就没事了


祝你好运,就像其他人说的那样,你可以返回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中了,就像其他人说的那样,你可以返回
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)中,因此行
return CONSOLE.nextInt();
似乎在提示用户输入另一个整数,即使他们已经输入了一个整数。行
return CONSOLE.nextInt()
似乎在提示用户输入另一个整数,即使他们已经输入了一个整数。我尝试过这样做,它仍然会给我同样的问题。我尝试过这样做,它仍然会给我同样的问题。@ElizabethFlores如果这个答案最适合你,请投票并将我的答案标记为最佳答案,以便其他人有类似问题的人可以更容易地找到解决方案。很高兴我能帮上忙=)这是我第一篇关于这个的帖子,所以我是一个newbie@ElizabethFlores如果这个答案最适合您,请投票并将我的答案标记为最佳答案,以便其他有类似问题的人可以更容易地找到解决方案。很高兴我能帮助=)这是我第一篇关于这个的帖子,所以我是个新手