首页 > 解决方案 > 当用户输入任何不是双精度的内容时如何打印错误消息?

问题描述

我正在尝试创建一个从用户读取双精度值的 Java 程序,打印这两个数字之间的差异,以便差异始终为正。如果输入的不是数字,我需要显示错误消息。请帮忙,谢谢!!

当我运行程序并输入第二个双精度值时,什么也没有发生。我也尝试添加 try 和 catch 但我收到错误说 num1 无法解析为变量:(

import java.util.Scanner;
public class Positive {

    public static void main(String[] args) {

        //Reads input
        Scanner sc = new Scanner(System.in);  

        System.out.println ("Please enter a double vaule: ");

            double num1 = Math.abs(sc.nextDouble());
            System.out.println("Please enter a second double vaule: " );
            double num2 = Math.abs(sc.nextDouble());
            double total  = 0;
            double total2 = 0;      

        if (sc.hasNextDouble()) {
        num1 = sc.nextDouble();

        if (num1>num2) {
            total = ((num1 - num2)); 
            System.out.println("The difference is " + total);
        }   

        if ((num1 < num2)); {
            total2 = ((num2 - num1));
            System.out.println("The difference is "+ total2);
        }

        }else {
            System.out.println("Wrong vaule entered");
        }

    }
}

标签: java

解决方案


你有正确的想法。您只需要删除;最后一个分号 ( )if并正确嵌套您的条件:

if (sc.hasNextDouble()) {
    num1 = sc.nextDouble();

    if (num1 > num2) {
        total = (num1 - num2); 
        System.out.println("The difference is " + total);
    }   
    else if (num1 < num2) {
        total2 = (num2 - num1);
        System.out.println("The difference is "+ total2);
    }
} else {
    System.out.println("Wrong vaule entered");
}

推荐阅读