首页 文章

只接受使用while循环或任何其他的正整数

提问于
浏览
0

我的程序目前拒绝除整数之外的任何输入,但我试图更进一步,让它只接受正整数 . 我怎么做到这一点 . 我尝试创建另一个布尔值并将其称为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);
    }

}

1 回答

  • 0

    只需添加一个测试输入数字是否为正的条件:

    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);
    

相关问题