Почему я не могу ничего вернуть в статическом методе таким образом
Я написал фрагмент кода просто для обучения, и я хотел понять, почему я не могу использовать эту запись.
public static double retangleArea (double c, double d) {
double area = c * d;
if ( c < 0 || d < 0) {
System.out.println("Error.");
return;
}
return area;
}
Если я вызову этот метод в моем main(), он выдаст "Ошибка". и до сих пор рассчитываю (c * d) с отрицательным числом, но я хотел, чтобы только печать показывалась. Ну, я знаю, как избавиться от этой проблемы, я просто хочу понять, почему я не могу сделать это и в чем проблема с этим.
3 ответа
Три способа обойти это:
throw
исключение, а не запись ошибки в консоль. Вы можете написать на консоль вcatch
блок, где вы, вероятно, в лучшем положении, чтобы справиться с ошибкой.Измените тип возвращаемого значения функции на
Double
(обратите внимание на столицу) и возвратnull
если вы не хотите рассчитывать значение.использование
java.lang.Optional<T>
как тип возвращаемого значения.
Из них я предпочитаю и поэтому рекомендую 1.
Вы можете использовать только return;
если метод возвращает void
,
Ваш метод public static double
это означает, что вы должны вернуть double в любом случае. Ты можешь сделать это public static void
и передать значение в поле класса.