Как использовать string для математических операций в java?

Рейтинг: 2Ответов: 1Опубликовано: 18.02.2023

У меня есть код (Он разбит на файлы так что не удивляйтесь):

import java.util.Objects;
import java.util.Scanner;

public class Plus {
    public static void plus(){
        Scanner in = new Scanner(System.in);

        double num1;
        double num2;
        String what;

        while (true) {
            System.out.print("Введите первое число: ");
            num1 = in.nextDouble();
            System.out.print("Введите второе число: ");
            num2 = in.nextDouble();
            System.out.print("Что делаем? +, -, /, * : ");
            in.nextLine();
            what = in.nextLine();

            SwitchCase(what, num1, num2);
       }
    }
    public static void SwitchCase(String what, double num1, double num2){
        if (Objects.equals(what, "+") || Objects.equals(what, "-") ||Objects.equals(what, "*") || Objects.equals(what, "/"))
            System.out.println(num1 + what + num2);
        else
            System.out.println("Введена неверная операция!");
    }
}

В данном случае на экран выведется что-то такое: 12.1+12.1 А мне нужно использовать значение переменной what как математическую операцию. Как это сделать? Ожидаемый вывод: 24.2

Ответы

▲ 0Принят

Нужно интерпретировать строковое значение как операцию при помощи хотя бы оператора switch / switch expression:

public static void SwitchCase(String op, double num1, double num2) {
    Double res = switch (op) {
        case "+" -> num1 + num2;
        case "-" -> num1 - num2;
        case "*" -> num1 * num2;
        case "/" -> num1 / num2;
        default -> null;
    };
    if (null == res) {
        System.out.println("Введена неверная операция!");
    } else {
        // System.out.println(num1 + op + num2 + " = " + res);
        System.out.println(res);
    }
}