JavaRush /Курси /Java Syntax Zero /Результат функції

Результат функції

Java Syntax Zero
Рівень 7 , Лекція 3
Відкрита

1. Оператор return

Думаєте, ви вже вивчили все про методи в Java? Як би не так, ви ще й половини не знаєте.

Почнемо з чогось простого. Наприклад, у Java є команда (оператор) return, який дозволяє миттєво завершити метод, у якому він був викликаний. Вигляд команди:

return;

Все: просто одне слово return і крапка з комою. Як тільки програма виконає цю команду, робота поточного методу відразу завершується, і продовжується робота викликаючого методу.

Якщо return викликати в методі main, метод main тут же завершиться, а разом із ним і вся програма.

Приклад:

class Solution
{
   public static void fill(int[] data, int from, int to, int value)
   {


     if (from < 0 || to > data.length)
       return;

     for (int i = from; i < to; i++)
     {
       data[i] = value;
     }
   }

   public static void main(String[] args)    {      int[] months = {1, 2, 3, 4, 5, 6, 7, 8 ,9, 10, 11, 12};     fill(months, 2, 10, 8);    } }


Метод fill заповнює частину переданого масиву значенням value.
Частина масиву визначається індексами from і to.
Якщо from менше 0 або to більше довжини масиву, метод тут же завершується.

У програмі вище є метод fill, який заповнює переданий у нього масив значенням value, причому заповнює не весь масив, а його частину, задану індексами from і to.

На початку методу fill перевіряється, чи коректно передані у нього значення. Якщо from менше 0, або to більше довжини масиву, то метод fill миттєво завершується (викликає команду return).

Корисна штука цей оператор return: є майже в кожному методі у Java, і ось чому.



2. Функції з результатом, void

Пам'ятаєте, ми колись розбирали, що є команди, а є вирази. І вираз, на відміну від команди, має значення, яке можна використовувати десь.

Так ось, у Java методи можуть мати значення. І це дуже крута новина: методи можуть не просто щось робити залежно від параметрів, але й, наприклад, обчислити щось і повернути результат обчислення.

Ви, до речі, з такими методами вже стикалися:

double delta = Math.abs(d1 - d2);
Метод abs() повертає значення типу double
Scanner console = new Scanner(System.in);
int x = console.nextInt();

Метод nextInt() повертає значення типу int
String str = "Привіт";
String s2 = str.toUpperCase();

Метод toUpperCase() повертає значення типу String
int[] data = {1, 4, 5, 6, 7, 8, 11};
int[] array = Arrays.copyOf(data, 4);

Метод copyOf() повертає значення типу int[]

Кожен метод може повернути тільки одне значення й одного заздалегідь заданого типу. Тип повернутого значення визначається при оголошенні методу:

public static тип ім'я(параметри)
{
   код методу
}

Де ім'я — це назва методу, параметри — перелік параметрів методу, а тип — тип результату, який повертає метод.

Для методів, які нічого не повертають, є спеціальний тип-заглушка — void.

Пишете свій метод і не хочете нічого повертати викликаючому методу? Просто оголосіть тип методу void, і проблема вирішена. Таких методів у Java теж багато.


3. Повернення результату

Як оголошувати метод із результатом обчислення/роботи ми щойно розібрали, а як же цей результат повернути з самого методу?

Для цього нам знову стане у пригоді оператор return. Передача результату з методу виглядатиме так:

return значення;

Де return — це оператор, який негайно завершить роботу методу. А значення — це значення, яке має повернути метод викликаючому методу як результат. Тип значення зобов'язаний збігатися з типом, вказаним при оголошенні методу.

Приклад 1. Метод обчислює мінімум із двох чисел:

int min(int a, int b)
{
   if (a < b)
     return a;
   else
     return b;
}
Метод повертає мінімум із двох чисел.

Якщо a < b
повернути a
Інакше
повернути b

Приклад 2. Метод дублює переданий у нього рядок n разів:

String multiple(String str, int times)
{
   String result = "";
   for (int i = 0; i < times; i++)
     result = result + " " + str;
   return result;
}
Метод приймає два параметри — рядок і кількість його повторень.
Створюється порожній рядок для майбутнього результату.

У циклі times разів
до рядка result додаються пробіл і рядок str.
Як результат методу повертається змінна result.

Приклад 3: Метод обчислює максимум із двох чисел за допомогою тернарного оператора:

int max(int a, int b)
{
   return (a > b ? a : b);
}
Метод повертає максимум із двох чисел.

повернути (якщо a > b, то a, інакше b)

Коментарі (18)
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ
Ihor Klymov Рівень 10
30 липня 2024
У вас зазначено, що: Метод abs() повертає значення типу double Мабуть метод повертає модуль числа, а результат записується у форматі double ?
hidden #3500645 Рівень 30
28 листопада 2024
Метод Math.abs() повертає модуль числа, а тип значення, яке він повертає, залежить від типу аргументу, переданого методу. Тому обидва твердження коректні) Якщо передати аргумент типу double, результат також буде double, тому вираз Метод abs() повертає значення типу double коректний, просто не конкретизований)
Sanya Рівень 11 Expert
8 квітня 2023
cube(a)*cube(a)*cube(a) cube(a*a*a) cube(cube(a)) Перевірку проходить лише один...
Julia Oskilko Рівень 34
30 вересня 2023
В умові сказано чому саме так У методі ninthDegree() піднеси переданий аргумент до третього степеня за допомогою методу cube(); отриманий результат знову передай у метод cube().
Андрии Бумер Рівень 37
19 грудня 2023
шкода що побачив тільки після того як вирішив. Довелось добряче попітніти...
Марк Рівень 8
1 березня 2023
Як все цікаво! тільки ніц не зрозумів що де приймає і куди повертає! Навіть коли подивився на вірні рішення, все-рівно не зрозумів аж нічого!
Андрии Бумер Рівень 37
19 грудня 2023
Приймає одзазу метод, котрий зводить до 9 ступеня. Віна приймає чило, вовертає в "куб" де число зводиться в третій степінь, а потім повторює операцію вже з поверненим числом. тобто приймається число а, чке двічі повертається вметод куб, за рахуноч чого отримуємо 9 ступіню. Наче якось так має бути, сподіваюсь, що доступно. cube(cube(a))
Kostiantyn Bogatyrchuk Рівень 14 Expert
21 січня 2023
"Думаєте, ви вже вивчили все про методи в Java? Де ж пак, ви ще й половини не знаєте" Де ж пак🤣🤣🤣
Peace The Ball Рівень 32
2 жовтня 2022
Автор українського тексту з Іршавського району? 😅
Pavlo Plynko Рівень 1 Expert
11 жовтня 2022
є альтернатива? типу "та де там" ?
Peace The Ball Рівень 32
15 жовтня 2022
Це був лише жарт, жодного негативного окрасу. В Іршавському районі живуть чудові люди. Я помітив слово яке часто вживається у знайомому мені діалекті. То для мене було трохи ностальгічно то я і вирішив пожартувати.
Pavlo Plynko Рівень 1 Expert
18 жовтня 2022
💛💙
Roma Chernesh Рівень 16
17 грудня 2022
Кому буде цікаво: "де ж пак" - уживається для вираження сумніву. Походить слово "пак" з Іршавського району (Західна Україна). Початкове значення "потім"
Kostiantyn Bogatyrchuk Рівень 14 Expert
22 січня 2023
та вже не перший раз таке тут зустрічається. таке враження, що перекладав алгоритм, а потім переклад перевірявся російськомовним працівником
Марк Рівень 8
26 лютого 2023
А з Іршавського району розповсюдилось мало не по всьому Закарпатті)
dianosauric Рівень 42
11 вересня 2022
УРА! тепер ми знаємо чому використовуємо цей void, котрий досить часто зустрічали
Taras Woytowitch Рівень 16
4 січня 2022
Трохи взрив башні)
Taras Woytowitch Рівень 16
1 січня 2023
а через місяць і 10 днів взрив башні буде у русні