我的程序目前拒绝除整数以外的任何输入,但我试图更进一步,让它只接受正整数。我将如何做到这一点。我尝试为这部分创建另一个 boolean 值并将其命名为 numisGreat 和另一个 do-while 循环,但我似乎无法理解。
import java.util.Scanner;
public class TandE {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int firstN = 0;
int secondN = 0;
boolean isNumber = false;
boolean numisGreat = false;
System.out.print("Enter a positive integer: ");
do {
if (input.hasNextInt()) {
firstN = input.nextInt();
isNumber = true;
} else {
System.out.print("Please enter a positive integer: ");
isNumber = false;
input.next();
}
} while (!(isNumber));
System.out.print("Enter another positive integer: ");
do {
if (input.hasNextInt()) {
secondN = input.nextInt();
isNumber = true;
} else {
System.out.print("Please enter a positive integer: ");
isNumber = false;
input.next();
}
} while (!(isNumber));
System.out.println("The GCD of " + firstN + " and " + secondN + " is " + gCd(firstN, secondN));
}
public static int gCd(int firstN, int secondN) {
if (secondN == 0) {
return firstN;
} else
return gCd(secondN, firstN % secondN);
}
}
最佳答案
只需添加一个条件来测试输入数字是否为正数:
boolean isPosNumber = false;
do {
if (input.hasNextInt()) {
firstN = input.nextInt();
if (firstN > 0) {
isPosNumber = true;
} else {
System.out.println("You entered a non-positive number, try again: ");
}
} else {
System.out.print("Please enter a positive integer: ");
isPosNumber = false;
input.next();
}
} while (!isPosNumber);
关于java - 使用 while 循环或任何其他方法只接受正整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055341/