如何验证输入是Java中的正整数

时间:2014-08-25 17:20:59

标签: java

我正在尝试创建一个输入,它将验证输入是否为整数,并且它是正数。现在我有这个。我该如何检查整数是否为正

编辑:我还需要它继续询问,直到你输入一个正整数

        /**
 * pre: none
 * post: returns a positive integer as entered by the user
 */
public static int getInput(){
    int a;
    Scanner scan = new Scanner(System.in);
    System.out.println("Enter Desired Quantity.");

    while (!scan.hasNextInt()){ //Checks if input is Integer
        System.out.println("Enter A Positive Integer");
        scan.next();

    }
    a = scan.nextInt(); //Assigns entered integer to a
    return a; //replace with correct code
}

3 个答案:

答案 0 :(得分:4)

您可以在单个循环中执行此操作,类似于跳过无效输入的循环。但是,由于循环需要确保两件事(即输入一个数字,并且该数字为正数),您需要修改它的主体。

由于输入需要至少完成一次,因此do / while循环是更好的选择。

从一个满足你想要条件的循环开始,即“我得到一个数字,这个数字是正数”:

int num = -1;
do {
    // We'll provide content of this in a moment
} while (num <= 0);

一旦循环退出,你知道num > 0,所以现在唯一的任务就是写一个循环体,让我们更接近那个目标。

在循环内部,我们需要检查用户输入的数字。如果他这样做,我们就会收获这个数字;否则,我们会告诉用户再试一次:

System.out.print("Please enter a positive integer number: ");
if (scan.hasNextInt()) {
    num = scan.nextInt();
} else {
    System.out.println("I need an int, please try again.");
    scan.nextLine();
}

就是这样 - 现在你有一个为你读取值的循环体,以及一个确保退出时值为正的循环条件。将循环与循环体结合起来,然后尝试一下。应该这样做。

答案 1 :(得分:1)

简单:

Scanner input = new Scanner(System.in);

System.out.print("Enter a number: ");
int number = input.nextInt();

if( number == 0)
{ System.out.println("Number is zero"); }
else if (number > 0)
{ System.out.println("Number is positive"); }
else 
{ System.out.println("Number is negative"); }

旁注:

检查 Math.signum()

  

返回参数的signum函数;如果参数为零,则为零   零,如果参数大于零则为1.0,如果参数为-1.0   小于零。

答案 2 :(得分:0)

你可以试试这个:

public static int getInput(){
   Scanner scan = new Scanner(System.in);

   System.out.println("Enter Desired Quantity.");
   int a = scan.nextInt();
   while (a  < 0){ //Checks if input is Integer
       System.out.println("Enter A Positive Integer");
       a = scan.nextInt();

   }

   return a;
}