Java 在switch语句默认情况下,如何用System.out.print()替换抛出异常

Java 在switch语句默认情况下,如何用System.out.print()替换抛出异常,java,exception,switch-statement,java-14,Java,Exception,Switch Statement,Java 14,这里我有一个简单的类来执行计算器操作 Calculator.java private final ArrayList <Double> values; private final String operation; public Calculator(ArrayList<Double> values, String operation) { this.values = values; this.operation

这里我有一个简单的类来执行计算器操作

Calculator.java

    private final ArrayList <Double> values;
    private final String operation;

    public Calculator(ArrayList<Double> values, String operation) {
        this.values = values;
        this.operation = operation;
    }

    public double calculate(){
        double num1 = values.get(0);
        double num2 = values.get(1);
        double answer;

        switch (operation) {
            case "+" :
                answer = addition(num1,num2);
                break;
            case "-" :
                answer = subtraction(num1,num2);
                break;
            case "*" :
                answer = multiplication(num1,num2);
                break;
            case "/" :
                answer = division(num1,num2);
                break;
            default:
                throw new IllegalStateException("Unexpected value: " + operation);
        }
        return answer;
    }

    public double addition(double num1,double num2){
        return num1+num2;
    }
    public double subtraction(double num1,double num2){
        return num1-num2;
    }
    public double multiplication(double num1,double num2){
        return num1*num2;
    }
    public double division(double num1,double num2){
        return num1/num2;
    }
}
私有最终数组列表值;
私有最终字符串操作;
公共计算器(ArrayList值、字符串操作){
这个值=值;
这个操作=操作;
}
公共双计算(){
double num1=value.get(0);
double num2=value.get(1);
双重回答;
开关(操作){
格“+”:
答案=加法(num1,num2);
打破
案例“-”:
答案=减法(num1,num2);
打破
案例“*”:
答案=乘法(num1,num2);
打破
案例“/:
答案=除法(num1,num2);
打破
违约:
抛出新的IllegalStateException(“意外值:+操作”);
}
返回答案;
}
公共双倍加法(双倍num1,双倍num2){
返回num1+num2;
}
公共双减法(双num1,双num2){
返回num1-num2;
}
公共双乘法(双num1,双num2){
返回num1*num2;
}
公共双分区(双num1,双num2){
返回num1/num2;
}
}
这里我想替换
抛出新的非法状态异常(“意外值:”+operation)
这是我自己的系统。输出消息,不返回任何内容,停止程序执行

这里我不能使用
返回0
,因为这是一个计算器

实际上,我想知道如何在cli中使用自己的system out语句正确处理此异常,而不显示红色字母的异常消息

我在这里使用了JDK14

[…]并返回noting并停止程序执行

由于方法签名的返回类型为
double
,因此必须返回一个结果。您不能返回而没有结果

为此,您可以更改方法合同,将返回类型的
calculate
方法设置为
void
,并通过单独的方法访问计算结果

private final ArrayList <Double> values;
private final String operation;
private Double result; //an instance variable to store the result.

public void calculate() {
    Double num1 = values.get(0);
    Double num2 = values.get(1);
    switch (operation) {
        case "+" :
            result = addition(num1,num2);
            break;
        case "-" :
            result = subtraction(num1,num2);
            break;
        case "*" :
            result = multiplication(num1,num2);
            break;
        case "/" :
            result = division(num1,num2);
            break;
        default:
           //Your print statement here
    }
 }

public Optional<Double> getResult() {
    return Optional.ofNullable(result);
}
私有最终数组列表值;
私有最终字符串操作;
私人双重结果//用于存储结果的实例变量。
公共空间计算(){
Double num1=value.get(0);
Double num2=value.get(1);
开关(操作){
格“+”:
结果=相加(num1,num2);
打破
案例“-”:
结果=减法(num1,num2);
打破
案例“*”:
结果=乘法(num1,num2);
打破
案例“/:
结果=除法(num1,num2);
打破
违约:
//你的打印声明在这里
}
}
公共可选getResult(){
返回可选的。不可用的(结果);
}

这方面的一个问题是调用方在
calculate
之前调用
getResult()
时会发生什么。我将把它留给您。

您能展示一下使用这个计算器类并调用Calculator方法的代码吗?要处理异常,可以添加一个
try-catch
块。实际上,我建议抛出一个
arithmetricexception
,因为这也会导致除以零。那么如何在没有默认值的情况下修改我的switch语句呢?最接近不返回任何内容的方法是调用
System.exit(int)
…是什么阻止您用
System.out.println
替换异常?