Бесплатный курс по java. Зарегистрируйтесь для отслеживания прогресса →

Java: Возврат значений

В модуле «Вызов методов» мы в основном работали с методами, которые возвращают результат, а не выводят его на экран. Честно говоря, вывод на экран — фактически обучающий элемент. В реальном коде на экран никто ничего не выводит (за исключением утилит командной строки). Методы возвращают данные, которые потребляются другими методами.

И только в конечном счете что-то выводится на экран, а иногда и ничего, ведь приложение Java может просто отвечать на запрос, который к нему делает какое-то другое приложение, и результат выполнения запроса тоже каким-то способом возвращать этому приложению, а уже оно будет его показывать на экране.

Научиться писать методы, которые возвращают информацию — первый шаг на пути к построению по-настоящему полезных программ.

Начнем с тривиального примера: создадим и вызовем метод, который принимает два числа и возвращает разность первого и второго. Назовём его sub(), от англ. subtract — «вычесть»:

public static void main(String[] args) {
  System.out.println(sub(10, 7));
}

static int sub(int a, int b) {
  var result = a - b;
  return result;
}
3

Обратите внимание: мы знаем, что вызов метода — выражение, поэтому мы передали вызов одного метода в вызов другого — System.out.println(sub(10, 7)).

Возврат задаётся специальной инструкцией return. Cправа от return помещается выражение. Любое выражение. То есть, мы можем делать вычисления сразу после return без создания переменной result:

public static void main(String[] args) {
  System.out.println(sub(2018, 1975));
}

static int sub(int a, int b)
{
  return a - b;
}
43

Задание

Сэм создаёт генеалогические деревья разных семей. Ему постоянно приходится рассчитывать количество места, занимаемое именами родителей на экране.

Создайте метод getParentNamesTotalLength() для Сэма. Он должен принимать один аргумент — имя ребенка, и возвращать количество символов в именах матери и отца суммарно. Метод не должен выводить ничего на экран, только возвращать число.

Для реализации используйте уже существующий метод Functions.parentFor():

  • Получение имени матери Functions.parentFor(child, "mother"), где child — имя ребёнка.
  • Получение имени отца Functions.parentFor(child, "father"), где child — имя ребёнка
  • Длину строки str можно получить таким образом: str.length() - это особый способ вызова метода, который мы подробно пока изучать не будем

Вам не нужно вызывать свой метод, только определить его.

Как обычно, метод нужно сделать public static, а не просто static, чтобы мы смогли вызвать его из другого класса.

App.getParentNamesTotalLength("Daenerys Targaryen"); // 35

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе