Java 用hasnetint方法从用户获取正整数

Java 用hasnetint方法从用户获取正整数,java,Java,我是Java新手,正在开发一个简单的程序,可以从用户那里获取一个正整数。以下是我目前掌握的代码: import java.util.Scanner; public class Binary{ public static void main( String [] args ){ Scanner console = new Scanner(System.in); int number = getInt(console, "Enter a positive integer");

我是Java新手,正在开发一个简单的程序,可以从用户那里获取一个正整数。以下是我目前掌握的代码:

import java.util.Scanner;
public class Binary{
  public static void main( String [] args ){
    Scanner console = new Scanner(System.in);
    int number = getInt(console, "Enter a positive integer");
    System.out.println(number);
  }

  public static int getInt(Scanner console, String prompt){
    System.out.println(prompt);
    while(!console.hasNextInt() || console.nextInt() < 0){
      console.next();
      System.out.println("Not an integer; try again");
      System.out.println(prompt);
    }

    return console.nextInt();


  }  

}
import java.util.Scanner;
公共类二进制文件{
公共静态void main(字符串[]args){
扫描仪控制台=新扫描仪(System.in);
int number=getInt(控制台,“输入正整数”);
系统输出打印项次(编号);
}
公共静态int getInt(扫描仪控制台、字符串提示){
System.out.println(提示);
而(!console.hasNextInt()| | console.nextInt()<0){
console.next();
System.out.println(“不是整数;请重试”);
System.out.println(提示);
}
返回控制台.nextInt();
}  
}
目前,当输入任何整数时,它将生成两个输入字段,我想知道如何重构while循环,使其在提示后只显示一个字段。提前谢谢

while(!console.hasNextInt()| | console.nextInt()<0){
while(!console.hasNextInt() || console.nextInt() < 0){
  console.next();
  System.out.println("Not an integer; try again");
  System.out.println(prompt);
}
console.next(); System.out.println(“不是整数;请重试”); System.out.println(提示); }
您将在条件中请求一个新变量

这样构造它:

int input = console.nextInt();

while(!console.hasNextInt() || input < 0){
      System.out.println("Not an integer; try again");
      System.out.println(prompt);
      input = console.nextInt();
}
int input=console.nextInt();
而(!console.hasNextInt()| | input<0){
System.out.println(“不是整数;请重试”);
System.out.println(提示);
input=console.nextInt();
}
或者更合适:

do {
      input = console.nextInt();
      System.out.println("Not an integer; try again");
      System.out.println(prompt);
} while (!console.hasNextInt() || input < 0);
do{
input=console.nextInt();
System.out.println(“不是整数;请重试”);
System.out.println(提示);
}而(!console.hasNextInt()| | input<0);

您的逻辑错误,请尝试

public static int getInt(Scanner console, String prompt){
   System.out.println(prompt);
   int num;

  while(console.hasNextInt()){
    num= console.nextInt();

    if(num >= 0){// If num is positive than break loop and return num
     break;
    }

   System.out.println("Not an integer; try again");
   System.out.println(prompt);
   }
    return num;
  }