JavaRush /Курсы /Java Syntax New Beta /Результат функции

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

Java Syntax New Beta
7 уровень , 3 лекция
Открыта

— Снова ты, Амиго. Ну привет.

— Что-то ты не очень рад меня видеть, Диего?

— У меня сложилось впечатление, что ты думаешь, что ты уже выучил всё про методы в 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. И сейчас я подведу тебя к мысли, почему так.

Фрагмент лекции JavaRush - университета.


7
Задача
Java Syntax Pro, 7 уровень, 3 лекция
Недоступна
Добро пожаловать! Но не всем.
Перед тобой метод signIn(), который приветствует пользователей сайта. Сейчас он приветствует всех пользователей, а должен только зарегистрированных. Имена всех незарегистрированных пользователей — "user". Добавь проверку имени пользователя в начало метода signIn(). Если имя "user", прерви выполнение

Функции с результатом, 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 тоже хватает.

Возвращение результата

— Я понял, как объявлять метод с результатом вычисления/работы. А как этот результат вернуть из самого метода?

— Правильный вопрос. Для этого нам снова пригодится оператор 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)

— Отлично. Методы — моя новая суперсила!

— Только если потренируешься на задачках достаточно. Отбой.

Фрагмент лекции JavaRush - университета.


7
Задача
Java Syntax Pro, 7 уровень, 3 лекция
Недоступна
Кубический калькулятор
Давай напишем реализацию калькулятора, который будет считать степени чисел. Для этого создай метод cube(). В качестве аргумента он должен принимать целочисленное значение типа long. Метод должен возводить полученное значение в третью степень и возвращать его как результат работы метода. Числа, котор
7
Задача
Java Syntax Pro, 7 уровень, 3 лекция
Недоступна
Кубический калькулятор в кубе
Калькулятором, который умеет возводить число в третью степень, никого не удивишь. Калькулятор, который может возвести число в девятую степень — другое дело! Так давай реализуем его! Для этого создай метод public static long ninthDegree(long). В качестве аргумента он должен принимать целочисленное зн
Комментарии (25)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3283984 Уровень 24
20 апреля 2023
с последней задачей возникли проблемы хотя программа возвращала нужный рез. Но тут валидаторы хотели элегантного решения, нужно ninthDegree сначала вызвать cube и результат присвоить скажем cubeResult, потом опять вызвать cube с аргументом cubeResult, таким образом вместо кондового перемножения 3 * 3 .... мы получаем 9ю степень
Maxim Belich Уровень 28
27 февраля 2023
doSomethink миксер мне в глаза)
Ilya Уровень 28
27 сентября 2022
public static long ninthDegree(long a){ return cube(a*a*a); } Вроде решение работает, но его не принимают. Может кто-то объяснить, почему?
Alexandra Уровень 28
27 сентября 2022
я думаю что метод cube нужно принципиально вызвать дважды
Х-50 Уровень 24
11 сентября 2022
Народ-я просто не могу понять- почему return cube(cube(a)); работает, а return cube*cube и cube*a*a*a; -НЕ работает. Ну это же ОДНО И ТОЖЕ!!!! Ну как так? Но выдаёт ошибку -Не могу найти описание переменной "cube" в классе "com.javarush.task.pro.task06.task0609.Solution". Возможно вы забыли ее импортировать (указать в import).
Vitalii Efimov Уровень 11
12 сентября 2022
Потому что cube - это не переменная, а метод. Ты не можешь просто так передать cube*a и получить искомый результат.
R_egular Уровень 23
24 сентября 2022
Попытаюсь объяснить !! Смотри - как я понял при вызове метода допустим cube(), в скобки мы обязательно должны подставить аргумент, в данном случае это число c типом long!! ЧТОБ БЫЛО БОЛЕЕ ПОНЯТНО В МЕТОДЕ ninthDegree назовем переменную b: ninthDegree (long b) Поэтому методе ninthDegree мы вы вызываем метод cube(b) - то есть когда в методе Main мы обращаемся к методу ninthDegree(здесь мы указываем число 2 которое и есть b) - то есть мы это число подставляем в метод cube(с аргументом b то есть 2) - и это число умножается в методе cube три раза и возвращает результат = 8 ! но наша формула это cube("cube(b)" = 8) то что в скобках это как бы следующий аргумент метода cube и он обратно умножается три раза !! Мы как бы используем метод cube два раза !!!
Данил Уровень 9
26 августа 2022
К сожалению материал лекций слабо связан с задачами. Да и качество материала становится говяным. Напомню, что курс платный. А оказывается хуже бесплатных ютьбовских лекций. Не удивляюсь, что так много людей бросают и так много негативных обзор на эти курсы. Эти диалоги между персонажами - просто вода. Лучше бы вместо этого впихнули бы больше конкретных примеров с подробным обзором. А то типа вы почитайте сказку для малышей, разбавленную несвязанными с материалом задачами, а что непонятно, ищите сами. Это когда ты пришел на ПЛАТНЫЕ курсы, а лектор рассказывает анекдоты, а в конце говорит, кому не понятна тема, идите купите профильные книжки и сами разберитесь. Бред.
zero to hero Уровень 44
1 марта 2023
Будучи школьником ходил в библиотеку. Так стиль повествования напоминает простые приключенческие рассказы. Сейчас мне почти 30 и я не против такого подхода. Но если вы такой серьезный, возможно, лучше выбрать книжки написанные профессорами с треми степенями?
merenoleg Уровень 36
16 марта 2022
Вспомните математику (число степень)степень = число степень*степень или (2^3)^3 = 2^9, по аналогии можно написать код метода найнздигри
Alexey Уровень 9
14 февраля 2022
Понятно, что непонятно ) Последнею задачу решил вот так : ninthDegree(cube(переданное значение)); Всё работает, но валидатор ругается.
Anonymous #2829539 Уровень 7
10 марта 2022
cube(переданное значение) возвращает в третьей степени, а нужно в девятой
IP Уровень 21
21 августа 2022
ninthDegree(cube(переданное значение из метода cube)); то есть два раза используешь метод cube()
Ilya Capercaillie Уровень 29
31 января 2022
С юзером настолько просто, что сложно))
Alexey Уровень 15
10 января 2022
Кубический калькулятор в кубе решается в 1 строчку
Максим Уровень 22 Expert
10 августа 2023
в одну или две ?)
hidden #2895522 Уровень 14
6 января 2022
Обрешался задачу 4-5 разными способами, пока методом тыка написал решение, которое было принято.