我正在尝试创建一个输入,它将验证输入是否为整数,并且它是正数。现在我有这个。我该如何检查整数是否为正
编辑:我还需要它继续询问,直到你输入一个正整数
/**
* 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
}
答案 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"); }
旁注:
返回参数的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;
}