Как вернуть несколько переменных из метода?
Необходимо написать калькулятор на 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 шт):
Напишите вспомогательный метод, который будет переводить строку в число. Если строка не может быть представлена числом, то метод будет возвращать 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);
}