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 ?
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 Рівень 33
30 вересня 2023
В умові сказано чому саме так У методі ninthDegree() піднеси переданий аргумент до третього степеня за допомогою методу cube(); отриманий результат знову передай у метод cube().
Андрии Бумер Рівень 25
19 грудня 2023
шкода що побачив тільки після того як вирішив. Довелось добряче попітніти...
Марк Рівень 8
1 березня 2023
Як все цікаво! тільки ніц не зрозумів що де приймає і куди повертає! Навіть коли подивився на вірні рішення, все-рівно не зрозумів аж нічого!
Андрии Бумер Рівень 25
19 грудня 2023
Приймає одзазу метод, котрий зводить до 9 ступеня. Віна приймає чило, вовертає в "куб" де число зводиться в третій степінь, а потім повторює операцію вже з поверненим числом. тобто приймається число а, чке двічі повертається вметод куб, за рахуноч чого отримуємо 9 ступіню. Наче якось так має бути, сподіваюсь, що доступно. cube(cube(a))
Kostiantyn Bogatyrchuk Рівень 14 Expert
21 січня 2023
"Думаєте, ви вже вивчили все про методи в Java? Де ж пак, ви ще й половини не знаєте" Де ж пак🤣🤣🤣
Peace The Ball Рівень 32
2 жовтня 2022
Автор українського тексту з Іршавського району? 😅
Pavlo Plynko Рівень 40 Expert
11 жовтня 2022
є альтернатива? типу "та де там" ?
Peace The Ball Рівень 32
15 жовтня 2022
Це був лише жарт, жодного негативного окрасу. В Іршавському районі живуть чудові люди. Я помітив слово яке часто вживається у знайомому мені діалекті. То для мене було трохи ностальгічно то я і вирішив пожартувати.
Pavlo Plynko Рівень 40 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 днів взрив башні буде у русні