java - 使用 while 循环或任何其他方法只接受正整数

标签 java algorithm java.util.scanner user-input do-while

我的程序目前拒绝除整数以外的任何输入,但我试图更进一步,让它只接受正整数。我将如何做到这一点。我尝试为这部分创建另一个 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/

相关文章:

java - 如果需要抽象接口(interface),则不允许在函数参数中提供已实现的接口(interface)

algorithm - 为什么我们应该在 <algorithm> 头的函数之前使用 std 命名空间而不应该在 <cmath> 头的函数之前使用它?

java - 循环结束后如何重复循环

带有配置文件的 Java Spring Autowiring

Java 8 - 尝试使用文本时区 ID 解析时间戳

java - 属性与变量/数据类型等之间的区别(java)

java - Android Studio : java. util.NoSuchElementException:找不到行

algorithm - 为什么朴素素性测试算法不是多项式

C++:这些按位 AND 和以下比较有什么作用?

java - 循环输入用户输入