Scanner scanner = new Scanner(System.in);
int inputNumber = scanner.nextInt();
if (inputNumber <= 0) {
System.out.println("Программа завершена. Введенное число должно быть больше 0.");
return;
}
int count = 1;
while (;for;) {
int randomNumber = new Random().nextInt(inputNumber + 1);
if (inputNumber == randomNumber) {
System.out.println("Попытка №" + count);
break;
}
count++;
}
}
Что и куда возвращает "return"???
И если в строке :
int randomNumber = new Random().nextInt(inputNumber + 1),
я у объекта класса Random не вызову метод nextInt(input number + 1),
то в каком диапазоне будут генерироваться числа в этом методе : int randomNumber = new Random()
???
linx
4 уровень
ребята объясните, уже лекцию про "return" прочитал, так и не понял что и куда возвращает "return".
Решен
Комментарии (8)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Евгений JackSunExpert
7 января 2023, 12:26решение
По умолчанию Math.random() генерирует случайные вещественные числа из промежутка [0;1), то есть от нуля включительно до 1 исключительно. Если нужно получить, например, от 0 до 7, то нужно умножить функию рандомайзера на 8 (т.е. 7+1), тогда получим диапазон от 0 до 7.999999, а приведение к целому отбрасит вещественную часть. А когда нам нужно получить диапазон не с нуля, надо добавить его к функции и вычесть столько же с множителя. Например, для получения диапазона от 2 до 7 используем такое выражение (int)(Math.random()*(7+1-2)+2).
Но в JAVA есть ещё и класс Random(), который делает то же самое, только в более понятной форме. т.е. мы ему передаём целое число, которое является верхней границей (не включительно) и получаем случайное число из диапазона [0; число).
При написании Random() без продолжения, выдаст ошибку.
+2
hidden #598481
6 января 2023, 23:18решение
В случае с методом main - это равносильно выходу из программы.
В общем случае в сигнатуре метода прописано, какой тип данных он возвращает, например:В сигнатуре метода getSomeString я подчеркнул, что он возвращает строку (String). Это означает, что после команды return обязательно должна быть строка или переменная, содержащая строку. Если метод возвращает void, т.е. ничего, то после return не должно быть ничего, return означает просто выход из метода. КУДА возвращает - туда, где был этот метод вызван. В моём примере - в метод main, в строку, где присваивается значение переменной x. По сути на место вызова метода после выхода из метода подставляется то значение, которое вернул этот метод.
Если метод не void, то без команды return обойтись нельзя - метод обязан вернуть что-то. Если метод void, то можно обойтись без команды return: он завершится, когда будут выполнены все команды в этом методе. Но можно использовать return, чтобы произвести выход из метода, не выполняя оставшиеся команды. Для этого нужно поместить return внутрь какого-нибудь условия.
+3
linx
11 января 2023, 23:29
Ух, здорово! Куда метод возвращает разобрался.
А вот дальше запутался :
- "public static String getSomeString(int argument)". А так может быть что, getSomeString типа String , а аргумент типа int?
- Если String x = "аргумент больше пяти!" или "аргумент меньше или равен пяти", то значит "x" не равно getSomeString(3)?
- И как в этой строке String x = getSomeString(3) , если x это строка , а getSomeString(3) это число?
- Если метод не void , то return произведёт выход из метода так же, как и break?
Будет здорово если и этом разберусь
0
hidden #598481
12 января 2023, 07:57решение
Аргументы, или параметры, - это входные данные у метода. Их может быть сколько угодно, и они могут быть любого типа. Это никак не связано с тем, какой тип данных получается в результате метода.
В примере выше метод getSomeString() принимает для запуска один аргумент типа int. Поэтому для вызова этого метода требуется в скобках указать какое-то число, и я при вызове метода указал getSomeString(3). Вместо тройки могло быть любое другое число.
Внутри метода переданное значение попадает в переменную argument (можно назвать как угодно). Это то число, которое внутри моего метода сравнивается с пятеркой. А возвращает метод строку, поэтому в методе main String x = grtSomeString(3) и там и там строка, ведь метод возвращает то, что написано после return, то есть строку.
🟰 это не операция сравнения, это операция присваивания. Она означает присвоить левой части (x) значение из правой части (результат работы метода getSomeString(3)).
Команда break прерывает только цикл, в котором она написана. Если после цикла есть другой код, то он продолжит исполняться. Команда return произведет выход из всего метода и вернет значение. Если return написано внутри цикла, то цикл прервется вместе со всем методом, как от команды break, в этом смысле return «мощнее».
+2
linx
12 января 2023, 13:30
Спасибо vk !
Я на 4-м уровне застрял большое месяца: методы, конструкторы, геттеры, сеттеры, классы, объекты (здесь вообще залип), void, return, ссылочные переменные , килограммы видео и километры текста.
И Ооо Да понемногу нейронная цепь складывается 🙂, мой мозг просит ещё некоторых ответов:
- От чего зависит, вложить число(3) : в эту строку
String x = getSomeString(3) или эту public static String getSomeString(int argument)?
- И не понимаю к какому методу в этой задаче return ? :
Scanner scanner = new Scanner(System.in);
int inputNumber = scanner.nextInt();
if (inputNumber <= 0) {
System.out.println("Программа завершена. Введенное число должно быть больше 0.");
return;
}
int count = 1;
while (;for;) {
int randomNumber = new Random().nextInt(inputNumber + 1);
if (inputNumber == randomNumber) {
System.out.println("Попытка №" + count);
break;
}
count++;
0
hidden #598481
13 января 2023, 08:07
На последний вопрос ответил тут https://javarush.com/help/87444.
От чего зависит, вложить число(3) : в эту строку
String x = getSomeString(3) или эту public static String getSomeString(int argument)?
Строка public static String getSomeString(int argument) - это заголовок метода, а дальше в { } описывается тело метода. Заголовок метода описывает правила работы с этим методом, что требуется сделать, чтобы его вызвать, и что из этого получится, а тело метода описывает, какие действия выполнит метод в процессе работы.
То, что метод является public и static, объяснять немного рано, не хочу перегружать информацией. String (на месте String может быть любой другой класс или void) перед именем метода обозначает тип возвращаемых данных. Это то, что получится в результате работы этого метода. В данном случае мы обещаем, что в результате работы метода получится какая-то строка. Дальше идёт имя метода. Имя каждого метода программист выбирает сам, и оно может быть любым, но конечно оно должно отражать смысл работы этого метода. Я решил назвать свой метод getSomeString = получить какую-то строку. Дальше в скобках указываются аргументы. Аргументы - это ресурсы, которые требуются методу для его работы. Моему методу нужен один аргумент типа int. В методе может быть сколько угодно аргументов любых типов. Аргументы получают свои значения при вызове метода. Метод можно вызывать сколько угодно раз, и можно каждый раз передавать ему разные значения аргументов.
Чтобы вызвать метод, надо написать его имя, и в скобках перечислить значения, которые передаются в качестве аргументов. getSomeString(3) - это вызов метода со значением аргумента, равным 3. Это означает, что начинает исполняться тело метода getSomeString, а аргумент этого метода int argument = 3.
Продолжу в следующем комментарии
+1
hidden #598481
13 января 2023, 08:13решение
Это означает, что начинает исполняться тело метода getSomeString, а аргумент этого метода int argument = 3. Результат работы метода, то есть в данном случае строка, которую возвращает метод, подставляется на то место, откуда был вызван этот метод.
В коде ниже метод getSomeString вызывается два раза, с аргументом 3 и с аргументом 6. Результат каждого вызова будет подставлен на место вызова, то есть сначала в переменную result подставится строка "аргумент меньше или равен пяти", потом произойдёт второй вызов, и его результат "аргумент больше пяти" заменит собой содержимое строки result, и будет выведен на экран второй строкой.
Таким образом, ты должен понять, что метод - это функция, к которой можно обращаться из разных мест своей программы. Ему можно передать необходимые для его работы значения аргументов, и он с ними произведёт те операции, которые описаны в теле метода.
Да, некоторые методы не содержат аргументов. В этом случае в заголовке метода будут пустые скобки, и при вызове этого метода тоже в скобках ничего писать не нужно, надо просто написать имя этого метода и пустые скобки. Например:Метод length() - это метод, который есть у каждой строки, потому что он описан внутри класса String. Он не имеет аргументов и возвращает длину той строки, у которой он был вызван
+1
linx
14 января 2023, 15:54
The best of the best of the best 👍
Реально ёмкое и ценное объяснение из всех прочитанных и просмотренных🧐 .
Огромное спасибо за помощь !
Я бы порекомендовал разрабам использовать данный коммент. в теории лекции
0