如何将条件合并到尝试捕获中?

How can I incorporate a condition into a try catch?

提问人:Shlok Yeolekar 提问时间:5/7/2021 更新时间:5/7/2021 访问量:53

问:

此代码不断要求用户输入双精度值,直到用户输入空行。当用户输入非双精度值(如字符串)时,将显示无效的输入消息。目前,即使用户输入空行,也会显示无效的输入消息,我理解原因。当我输入空行时,让无效输入不显示的最佳方法是什么。我不确定是否有办法使用 try-catch,或者我是否只需要使用其他东西。

System.out.println("Type in the polynomials in increasing powers.");
Scanner prompt = new Scanner(System.in);
String input = " ";
double parsed;
int counter = 0;

while (!(input.equals("")) & counter < 10) {
    input = prompt.nextLine();
    try {
        parsed = Double.parseDouble(input);
        expression.addCoefficient(parsed);
        counter++;
    }
    catch (NumberFormatException e) {
        System.out.println("Invalid input");
    }
    
Java 循环 try-catch java.util.scanner user-input

评论

0赞 Robert Harvey 5/7/2021
您可以编写一个封装 try/catch 块的方法,也可以使用它。tryParseDouble

答:

0赞 something 5/7/2021 #1
while (counter < 10 && !(input = prompt.nextLine()).equals(""))) {
    try {
        parsed = Double.parseDouble(input);
        expression.addCoefficient(parsed);
        counter++;
    }
    catch (NumberFormatException e) {
        System.out.println("Invalid input");
    }
 }

请注意,计数器上的测试需要首先出现。一旦用户犯了 10 个错误,就不要再提问了。

0赞 Yati Sawhney 5/7/2021 #2

您可以使用以下命令在用户按回车键时跳过:

public static void main(String[] args) {
        System.out.println("Type in the polynomials in increasing powers.");
        String NEW_LINE = "\n";
        Scanner sc = new Scanner(System.in);
        String input = sc.next();
        double parsed;
        int counter = 0;

        while (counter < 10) {

            if (input.equals(NEW_LINE)){
                continue;
            }
            try {
                parsed = Double.valueOf(input);
                //expression.addCoefficient(parsed);
                System.out.println(parsed);
                counter++;
            }
            catch (NumberFormatException e) {
                System.out.println("Invalid input");
            }
        }