Как заменить исключение throw на System.out.print() в случае оператора switch по умолчанию
Здесь у меня есть простой класс для выполнения операций с калькулятором.
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;
}
}
Здесь хочу заменить throw new IllegalStateException("Unexpected value: " + operation);
этот с моим собственным System.out сообщением и возвратом, отмечая и останавливая выполнение программы.
Здесь я не могу использовать return 0
потому что это калькулятор.
На самом деле я хочу знать, как правильно обрабатывать это исключение с помощью моей собственной инструкции system out в cli без сообщения об исключении с красной буквой msg
Я использовал здесь JDK 14
1 ответ
[...] и вернуть отметку и остановить выполнение программы.
Поскольку сигнатура метода имеет тип возврата 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);
}
Проблема в том, что происходит, когда звонящий звонит getResult()
перед calculate
. Я оставлю это тебе.