带有do-while循环的Java try-catch输入验证

问题描述 投票:0回答:1

我一直坐在这里(尴尬)数小时,试图获得一个do-while循环以接受用户输入,直到输入有效为止,但是当我要尝试使用的布尔值时,我似乎很困惑并退出循环。每当我可以使程序部分工作时,catch异常最终都会无限地重复执行。任何帮助将不胜感激。

Scanner scnr = new Scanner(System.in);

    double wallHeight = 0.0;
    boolean valid = false;


    // Implement a do-while loop to ensure input is valid
   // Prompt user to input wall's height
    do {
        try {
    System.out.println("Enter wall height (feet): ");
    wallHeight = scnr.nextDouble();
    valid = false;

        if (wallHeight <=0) {
            throw new Exception ("Invalid Input");
            }
        }

        catch (Exception e) {
            System.out.println("Invalid Input");
            }

        }while (!valid);
java input try-catch do-while
1个回答
1
投票

[假设输入为valid开始(并在循环的每次迭代中将valid设置为true)。仅在遇到异常(希望是您提出的异常)时才将valid设置为false

do {
    valid = true;
    try {
        System.out.println("Enter wall height (feet): ");
        wallHeight = scnr.nextDouble();
        if (wallHeight <= 0) {
            throw new Exception("Invalid Input");
        }
    } catch (Exception e) {
        valid = false;
        System.out.println("Invalid Input");
    }
} while (!valid);

请注意,您在这里没有出现需要例外,为

do {
    valid = true;
    System.out.println("Enter wall height (feet): ");
    wallHeight = scnr.nextDouble();
    if (wallHeight <= 0) {
        System.out.println("Invalid Input");
        valid = false;
    }
} while (!valid);

也将起作用。

© www.soinside.com 2019 - 2024. All rights reserved.