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
Задание
Сэм создаёт генеалогические деревья разных семей. Ему постоянно приходится рассчитывать количество места, занимаемое именами родителей на экране.
Создайте функцию App.getParentNamesTotalLength()
для Сэма. Она должна принимать один аргумент — имя ребенка, и возвращать количество символов в именах матери и отца суммарно. Функция не должна выводить ничего на экран, только возвращать число.
Для реализации используйте уже существующую функцию Functions.parentFor()
:
- Получение имени матери
Functions.parentFor(child, "mother")
, гдеchild
— имя ребёнка. - Получение имени отца
Functions.parentFor(child, "father")
, гдеchild
— имя ребёнка - Длину строки str можно получить таким образом:
str.length()
- это особый способ вызова функций, который мы подробно пока изучать не будем
Вам не нужно вызывать свою функцию, только определить её.
Как обычно, функцию нужно сделать public static
, а не просто static
, чтобы мы смогли вызвать ее из другого класса.
App.getParentNamesTotalLength("Daenerys Targaryen"); // 35