Как вернуть несколько переменных из метода?

Необходимо написать калькулятор на Java, у которого 1 публичны1 метод и 2 приватных:

Публичный calculate(), — который принимает строку, где может быть как строка операция строка, так и число операция число, разделенные пробелами. Затем уже в зависимости от типа полученной строки, получаем результат из двух приватных методов ниже.

public static String calculate(String input) {

        String[] str = input.split(" ");
        return str;
}

private static String calculate(String a, String operation, String b,) {

    if (str[1].equals("+")) {
        return str[0] + str[2];
    }
    var temp = str[0].replace(str[2], "");
    if (temp.equals(str[0]))
        throw new IllegalArgumentException();
    else
        return temp;
}

private static double calculate(double a, double b, String operation) {
    double op = 2;

        switch (operation) {
            case ("+"): op = a+b;
            break;
            case ("-"): op = a-b;
            break;
            case ("*"): op = a*b;
            break;
            case ("/"): op = a/b;
            break;
            case ("%"): op = a%b;
            break;
        }
        return op;
}

Ответы (1 шт):

Автор решения: Vadik

Напишите вспомогательный метод, который будет переводить строку в число. Если строка не может быть представлена числом, то метод будет возвращать null. Например, такой метод можно реализовать так:

private static Double parseDoubleOrNull(String value) {
    try {
        return Double.parseDouble(value);
    } catch (NumberFormatException exception) {
        return null;
    }
}

Далее, применяем этот метод к левому и правому аргументу. Если оба аргумента не-null, то используем второй метод calculate, иначе — последний:

String[] strings = input.split(" ");
String left = strings[0];
String right = strings[2];
Double leftDouble = parseDoubleOrNull(left);
Double rightDouble = parseDoubleOrNull(right);
if (leftDouble != null && rightDouble != null) {
    calculate(leftDouble, rightDouble);
} else {
    calculate(left, right);
}
→ Ссылка