Почему я не могу ничего вернуть в статическом методе таким образом

Я написал фрагмент кода просто для обучения, и я хотел понять, почему я не могу использовать эту запись.

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 ответа

Три способа обойти это:

  1. throw исключение, а не запись ошибки в консоль. Вы можете написать на консоль в catch блок, где вы, вероятно, в лучшем положении, чтобы справиться с ошибкой.

  2. Измените тип возвращаемого значения функции на Double (обратите внимание на столицу) и возврат null если вы не хотите рассчитывать значение.

  3. использование java.lang.Optional<T> как тип возвращаемого значения.

Из них я предпочитаю и поэтому рекомендую 1.

Вы можете использовать только return; если метод возвращает void,

Ваш метод public static double это означает, что вы должны вернуть double в любом случае. Ты можешь сделать это public static void и передать значение в поле класса.

Другие вопросы по тегам