Просто доступно и лаконично . Это наверное самый лучший курс который мне попадался у Автора талант все по делу ничего лишнего СУПЕР!!!! Однозначно подписка и лайк
Из всех видео ,что я искал на ютюб, твои - легенда. Все внятно, речь чистая, повествование с пониманием каждого сказанного слова. Человеческое тебе спасибо.
Даже что-то сделал ) Спасибо! import java.util.Scanner; public class TaskSw { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Введите слово:"); String word = sc.nextLine().trim().toLowerCase(); switch (word) { case "питер": case "москва": System.out.println("Это Россия"); break; case "тай": case "тайланд": System.out.println("Что-то на богатом"); break; default: System.out.println("Пустыня"); } } }
Полезные выводе из данного урока: - Цикл do while выполняется как минимум один раз, далее, если условие цикла верные (true), то цикл повторяется до тех пор, пока условие не станет не верным (false). - Переменные видны только в в пределах { }, где они были объявлены.
На основе этого сделал проверку пароля. прикольно Scanner s = new Scanner(System.in); int y = s.nextInt(); int numCount = 3; while (y != 4567 && numCount > 0) { System.out.println("Парлоль не верный попробуйте еще раз"); System.out.println("Осталось попыток: " + numCount); numCount--; y = s.nextInt(); } if (numCount == 0) { System.out.println("В доступе отказано"); } else { System.out.println("Пароль принят, спасибо."); }
здравствуйте,скажите пожалуйста почему в while(value!=5); стоит восклицательный знак и что он значит,заранее спасибо !) и еще, цикл DoWhile работает с String ?
import java.util.Scanner; public class While { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Введите пин код:"); int value = scanner.nextInt(); while (value!=6567){ System.out.println("Вы ввели неверный пин!"); value = scanner.nextInt(); } System.out.println("Поздравляем,вы вошли в систему!"); } }
при инициализации value нужно дать ему значение, иначе ругается программа при while(value!=5) здесь не с чем сравнивать , do while нужен , что бы цикл начинался, даже если дал значение равное 5.. ниже в цикл не зайдем. -------------- public class DoWhile { public static void main(String[] args) { int value = 5; Scanner scanner = new Scanner(System.in); while (value!=5){ System.out.println("введи 5"); value= scanner.nextInt(); } System.out.println("вы ввели 5"); } }
Все отлично но один вопрос, если ввести 5 сразу. Как он понимает, что мы ввели ее сразу, если цикл не срабатывает Все понятно. Инициализация переменной value происходит с клавиатуры..
+Саша дерзко Да, можно. Только проверять равенство строк надо не с помощью ==, а с помощью метода equals() в классе String. Вот так: while(!string.equals("яблоко"))
@@focusproductionarts да там платно. Но оно того стоит. Сам прошел примерно половину этого курса и благодаря ему неплохо адаптировал мышление под свою будущую профессию. Сам учился и делал диссертацию по химии, а после прохождения половины курса на джавараш начал искать вакансию джуна. Первое же собеседование показало, что помимо основного языка нужно знать еще кучу всякого. За пару месяцев ознакомился с некоторыми веб-технологиями, html и т.д. Завел аккаунт на гитхабе и выложил там пару-тройку простеньких проектов. В итоге нашел вакансию джуна (правда не на Java, а на JavaScript) и вот уже полгода работаю и развиваюсь в направлении веб-разработки. О деньгах, потраченных на Джавараш нисколько не жалею, потому что считаю, что получил от него большую пользу и уверенность в своих силах. Такая вкратце моя история:)
@@idu6349 как долго занял путь до середины курса? каждый день занимался? Дальше курс не проходишь? и где черпал теорию если не на джавараше? сам там взял премиум, но теория там явно отстает от задач. иногда вообще не вкуриваю что от меня хотят в задачах, если я еще этого не проходил. а я еще только на 4м лвл
@@Just_Viktor первый раз начал изучать курс году в 2018-м. Был абсолютным нулем в программировании. Занимался около 2 месяцев каждый день часа по 4-6. Делал все задачи подряд и изучал теорию, включая чтение книжки "Java2" (Хорстман и Корнелл кажется). Добрался до 10-го или 11-го уровня. Потом в связи с диссертацией забросил и вернулся только в середине июня 2019-го года. Опять плотно взялся. Занимался часов по 5-8 в день. Повторил что уже проходил и за пару месяцев добрался уже до 20-го уровня, освоив JavaCore, основы многопоточности, несколько паттернов и т.д. А уже к концу августа начал знакомиться с HTML, CSS, GIT, JSP и т.д... ну а дальше я уже писал. Сейчас курс Джавараш пока не прохожу - полностью сосредоточен на работе с Javascript, Node.js и другими вешами.
У меня только один вопрос: а почему у вас после написания первой строчки (ниже главного метода) всегда создаётся лишний пробел слева? Глаз режет =) Это глюк или у этого есть какое-то объяснение или применение?
Писала Цикл всё также как на уроке показываете, а выдаёт в результате много строк и цифры ввести нельзя. уже и на других компах попробовала и перепроверила нет ли ошибок. нет всё равно, выдаёт какие-то ошибки. что делать? Scanner функция включается сразу!
А я извращенец: :) (Цикл "for" может заменить любой цикл "while", но может пострадать читаемость, ниже пример) Scanner scn = new Scanner(System.in); System.out.println("Type 5"); for (int value = scn.nextInt(); value != 5; value = scn.nextInt()) { //(1) принимаем с клавиатуры цифру(1), если не равна 5(!=), пишем сообщение(2), просим новую цифру. System.out.println("Not correct, please type 5 "); //(2) } System.out.println("Thanks");
Добрый день такой вопрос. Вот смотрите в цикле "do" мы пишем что надо ввести цифру 5, а в вайле , как раз ту самую цифру 5 . Так вот почему если запустить программу и ввести сразу цифру 5 , программа не пропустит , весь цикл "do" , и сразу напишет что введена цифра 5. Почему если я сразу ее впишу , она все равно из за цикла do потребует еще раз написать .
Вам наверняка уже не актууально, но может кому то поомжет. Фишка в том, что когда в вайл стоит value==5 - условие получается false, и цикл прекращает выполнение после 1 прогона, если введена НЕ 5. Но если введена 5, то условие становится true, поскольку в нём стоит value==5. Следом за вайл выводится заготовленный System.out.println - который говорит то, что мы туда заранее записали.
А можно ли поставить два условия : while (field.gameIsNotOver() | field.gameIsNotOver2()); ? Или как можно другим более качественным способом сделать чтобы работал do пока верны два условия? Спасибо
Хоть 3, их может быть сколь-угодно много. Логические операции являются n-арными и могут иметь любое количество операндов. То бишь, количество операндов может быть от 2-х и больше. Используйте для этих целей конъюнкцию (&&) и дизъюнкцию (||).
Всем доброго дня! Кто может подсказать, почему после написания "do " компилятор выдаёт ошибку! P.s. пересмотрел 10 раз, всё сделано, как на видео! Спасибо!
Работаешь в intelij? Там же можно навести на красное и посмотреть, в чем конкретно заключена ошибка. Может проблема и не в do, а скобку фигурную пропустил или еще чего
Здравствуйте! У меня вопрос по поводу места написания scanner = new Scanner(System.in); В видео порядок такой: import java.util.Scanner; public class DoWhile { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int value; do { System.out.println("Введите цифру 5"); value = scanner.nextInt(); } while (value!=5); System.out.println("Вы ввели 5"); } } //Получается система сначала считывает что-то, если это оказывается не 5, то она "ругается" и только потом //пользователь понимает, что нужно ввести 5. А почему не так: import java.util.Scanner; public class DoWhile { public static void main(String[] args) { Scanner scanner; int value; do { System.out.println("Введите цифру 5"); scanner = new Scanner(System.in); value = scanner.nextInt(); }while (value!=5); System.out.println("Вы ввели 5"); } } То есть программа сначала просит ввести цифру и лишь потом ее считывает. Так же логичнее? И что-то мне подсказывает, что прога будет работать быстрее?
Во втором примере вы каждую итерацию цикла (пока введенное число не равняется пяти) будете создавать новый объект класса Scanner. Это повлечет большие расходы по памяти и по времени. В первом же примере, объект класса Scanner создается один раз и в ходе работы программы используется только он.
не знаю нужен лb тебе ещё ответ, но когда человек пишет число, кроме 5-ки, запускается код в цикле while и в этом же коде человеку дают повторную возможность ввести ещё раз value до тех пор пока value не станет равной 5
А вот вам практика :) Написать программу которая генерирует случайное число каждый раз в цикле do while и просит у пользователя на ввод число до тех пор пока пользователь не угадает это самое случайно сгенерированное число от 1 до 10. Бонусом: после первой неудачной попытки вывести на экран "Неправильно, попробуй еще раз".
Ответ import java.util.Scanner; import java.util.Random; public class DoWhile { public static void main(String [] args) { int i, ranDigit; boolean again = false; Random rand = new Random(); Scanner scanner = new Scanner(System.in); do { if (again) System.out.println("Try again"); again = true; ranDigit = rand.nextInt(10 + 1); // System.out.println(ranDigit); System.out.println("Input digit that was guessed..."); i = scanner.nextInt(); } while (i != ranDigit); System.out.println("Congratulation, you are Vanga"); } }
import java.util.Scanner; import java.util.Random; class GuessTheNumber { public static void main(String[] args) { Random rand = new Random(); Scanner sc = new Scanner(System.in); int num, random; do { random = rand.nextInt(10 + 1); System.out.println("Guess number: "); num = sc.nextInt(); if (num == random) { System.out.println("You've guessed the number!"); } else { System.out.println("Try again!"); } } while(num != random); } } у меня вот так получилось :) кстати, как работает эта строчка random = rand.nextInt(10 + 1);, я её у тебя подсмотрел
@@sv0ice Только что перепроверил. Это строка с ошибкой, должно быть rand.nextInt(10) + 1. Так мы получаем максимум из дипазаон исключительно т.е. все числа до 10 кроме самой десятки, и минимальный 0 включительно, но если полсе скобок добавить + n "где n будет любое число" то нижний диапазон будет увелчен на это самое число ровно как и верхний, в результате имеем: все числа от 1 до 10 т.к. 10 + 1 = 11 а это верхний диапазон без этого числа. Зы объясняю я так себе, так что если не ясно то лучше спросить еще раз или гуглануть, статья явно будет лучше разжевывать вопрос.
Знак "=" в данном случае выступает в качестве знака операции присваивания. Это бинарная операция, которая позволяет присвоить результат выражения, который записывается справа от знака операции, так называемому именующему выражению (оно всегда расположено слева от знака операции и не может быть константой). Слева у нас находится ссылочная переменная в которую мы присваиваем адрес объекта, который создаём с помощью вызова конструктора. Собственно, подходя к сути вопроса, оператор new отвечает за вызов конструктора, а String - всего лишь класс, согласно шаблону которого мы создаём конкретный объект (экземпляр класса).
Как я понял, если мы сравниваем объекты и используем оператор ==, то мы получаем true, если ссылки указывают на один и тот же объект. Поэтому у тебя он и выводит false. Потому что ты сравниваешь 2 разных объекта в условии. Ссылки представляют из себя битовую последовательность и их биты отличаются друг от друга в данном случае, поскольку это 2 разных объекта. public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String country; do { System.out.println("Введите: Россия"); country = scanner.nextLine(); } while (country != "Россия"); } Для сравнения ссылочных переменных на значение используй метод equals(); public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String country; do { System.out.println("Введите: Россия"); country = scanner.nextLine(); } while (!country.equals("Россия")); }
import java.util.Scanner; public class DoWhile { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int value; do{ System.out.println("Enter 5: "); value = scanner.nextInt(); } while(value!=5); System.out.println("You enter 5"); } }
import java.util.Scanner; public class doWhileCycle { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int damage; int hp = 100; do{ System.out.println("нанести урон"); damage = scanner.nextInt(); hp = hp - damage; System.out.println("Ви нанесли урона: " + damege+" осталось здоровя: "+hp); }while (damage < hp); System.out.println("Убито"); } }
Можно же так сделать и тогда "do" не понадобится: int value = 1; //или любое число, кроме 5 while (value!=5){ System.out.println("Введи число 5"); value = scanner.nextInt(); }
наверное пропустил строку вывода на экран System. out println после объявления класса Scanner в самом начале. Я пропустил и у меня ничего на экран не выводило, но ждало пока я не введу 5. Пришлось завершить исполнение и дописать, потом норм заработало.
System.out.println("Спасибо автору, курс реально топчик! Отлично объясняешь и все по делу. Видел похожие курсы, где, написано"Для начинающих", но поймут только те кто имел дело с программированием до. А у тебя реально для самых новичков.");
Регистрируйтесь на курс "Продвинутая Java": ruclips.net/video/rRe1vT0SDD8/видео.html
Практикуйтесь в написании Java кода: java-marathon.tilda.ws
Просто доступно и лаконично . Это наверное самый лучший курс который мне попадался у Автора талант все по делу ничего лишнего СУПЕР!!!! Однозначно подписка и лайк
Из всех видео ,что я искал на ютюб, твои - легенда. Все внятно, речь чистая, повествование с пониманием каждого сказанного слова.
Человеческое тебе спасибо.
спасибо, самые понятные из знакомых мне уроков.
Пожалуйста!
alishev, у тебя просто годный контент! Объясняешь легко и понятно. Большинство ютуберов рассказывают хмуро и быстро. Респект тебе)
Спасибо большое друг!!! Отличнейшее объяснение!!! Видно что своим делом занимаешься!! Не сразу понял что такое "!= ". D Java 'то значит не равно.
Спасибо за уроки. Действительно доходчиво.
Спасибо тебе, за то что подробно всё объясняешь, и вовремя.
в других видео, либо показывают, либо рассказывают.
Очень доходчиво и кратко, приятно слушать)
Спасибо!)
Огромное спасибо за самые понятные обучалки на ютубе.
Легко и интересно. + еще один шаг за сегодня!
Все очень просто и понятно. Спасибо!
Очень хорошо заходит, спасибо.
Большое спасибо за уроки.
Спасибо за видео, очень доступно
Команда psvm это быстрое написание public static void main(String[]args){}// если кто не знал, очень облегчает жизнь
Можно просто через "main"
Спасибо , добрый человек
Огромное спасибо!!! Это бесценно!
Спасибо, все понятно, интересно, как будет на практике....
можете еще посмотреть пару видео уроков по JAVA на моем канале.
Даже что-то сделал ) Спасибо!
import java.util.Scanner;
public class TaskSw {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Введите слово:");
String word = sc.nextLine().trim().toLowerCase();
switch (word) {
case "питер":
case "москва":
System.out.println("Это Россия");
break;
case "тай":
case "тайланд":
System.out.println("Что-то на богатом");
break;
default:
System.out.println("Пустыня");
}
}
}
Большое спасибо за уроки..
Очень разборчиво и четко
thx 4 vid alishev !
Классно объясняешь, молодец.
обьясняешь лучше чем на вебинаре
Спасибо за урок!
+Вячеслав Харламов Не за что!
Считаю, с самого начала курса нужно было объяснить работу метода "main", а точнее, что он считывает строчку за строчкой.
Полезные выводе из данного урока:
- Цикл do while выполняется как минимум один раз, далее, если условие цикла верные (true), то цикл повторяется до тех пор, пока условие не станет не верным (false).
- Переменные видны только в в пределах { }, где они были объявлены.
На основе этого сделал проверку пароля. прикольно
Scanner s = new Scanner(System.in);
int y = s.nextInt();
int numCount = 3;
while (y != 4567 && numCount > 0) {
System.out.println("Парлоль не верный попробуйте еще раз");
System.out.println("Осталось попыток: " + numCount);
numCount--;
y = s.nextInt();
}
if (numCount == 0) {
System.out.println("В доступе отказано");
} else {
System.out.println("Пароль принят, спасибо.");
}
здравствуйте,скажите пожалуйста почему в while(value!=5); стоит восклицательный знак и что он значит,заранее спасибо !) и еще, цикл DoWhile работает с String ?
"!=" означает не равно,
т.е. выражение "5!=4" выдаст true, а выражение "5!=5" выдаст false, потому что оно равно пяти.
Класно розказує все зрозуміло
Спасибо!
Пожалуйста!
ты лучший!!
import java.util.Scanner;
public class While {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Введите пин код:");
int value = scanner.nextInt();
while (value!=6567){
System.out.println("Вы ввели неверный пин!");
value = scanner.nextInt();
}
System.out.println("Поздравляем,вы вошли в систему!");
}
}
можно и так)
Спасибо за урок. Правда остался вопрос каким образом у нас при выполненном условии повторяется сканер? Мы же его повторно не вызываем
пожалуйста объясни, что значит восклицательный знак в строке while(value!=5)?
" != " это обозначение понятия "не равно" : value не равно 5
== равно
!= не равно
Подскажите,что за восклицательный знак,когда вводишь
White(value!=5)
Не могу понять.
Заранее спасибо за ответ 🙏🏼
Не уверен, но вроде это значит "не равно 5"
Восклицательный знак ! - заменяет слово НЕТ
Спасибо
Привет! А почему в цикле do ... while после while(условие) стоит ";", а не "{}"? Это правило, или можно как угодно ставить?
А что если value декларировать как public в теле do?
при инициализации value нужно дать ему значение, иначе ругается программа при while(value!=5) здесь не с чем сравнивать , do while нужен , что бы цикл начинался, даже если дал значение равное 5.. ниже в цикл не зайдем.
--------------
public class DoWhile {
public static void main(String[] args) {
int value = 5;
Scanner scanner = new Scanner(System.in);
while (value!=5){
System.out.println("введи 5");
value= scanner.nextInt();
}
System.out.println("вы ввели 5");
}
}
лучшего объяснения по курсам java я не находил. новичку очень тяжело. были бы еще домашки. жду не дождусь методов , конструкций ..
Как делать do while со строками
THANKS
Все отлично но один вопрос, если ввести 5 сразу. Как он понимает, что мы ввели ее сразу, если цикл не срабатывает
Все понятно. Инициализация переменной value происходит с клавиатуры..
А можно с помощью цикла while проверять string? Например: While (string != "яблоко")??
+Саша дерзко Да, можно. Только проверять равенство строк надо не с помощью ==, а с помощью метода equals() в классе String.
Вот так:
while(!string.equals("яблоко"))
+javaRussia Теперь понял, спасибо))
top
не помешал бы самостоятельные задания в конце урока
Их можно найти на других ресурсах, типа Джавараш. Не смог сходу найти другие сайты с задачками, но они мне пару раз попадались.
@@idu6349 на джавараше за бабки на подписку, нафиг надо
@@focusproductionarts да там платно. Но оно того стоит. Сам прошел примерно половину этого курса и благодаря ему неплохо адаптировал мышление под свою будущую профессию. Сам учился и делал диссертацию по химии, а после прохождения половины курса на джавараш начал искать вакансию джуна. Первое же собеседование показало, что помимо основного языка нужно знать еще кучу всякого. За пару месяцев ознакомился с некоторыми веб-технологиями, html и т.д. Завел аккаунт на гитхабе и выложил там пару-тройку простеньких проектов. В итоге нашел вакансию джуна (правда не на Java, а на JavaScript) и вот уже полгода работаю и развиваюсь в направлении веб-разработки. О деньгах, потраченных на Джавараш нисколько не жалею, потому что считаю, что получил от него большую пользу и уверенность в своих силах.
Такая вкратце моя история:)
@@idu6349 как долго занял путь до середины курса? каждый день занимался? Дальше курс не проходишь? и где черпал теорию если не на джавараше? сам там взял премиум, но теория там явно отстает от задач. иногда вообще не вкуриваю что от меня хотят в задачах, если я еще этого не проходил. а я еще только на 4м лвл
@@Just_Viktor первый раз начал изучать курс году в 2018-м. Был абсолютным нулем в программировании. Занимался около 2 месяцев каждый день часа по 4-6. Делал все задачи подряд и изучал теорию, включая чтение книжки "Java2" (Хорстман и Корнелл кажется). Добрался до 10-го или 11-го уровня. Потом в связи с диссертацией забросил и вернулся только в середине июня 2019-го года. Опять плотно взялся. Занимался часов по 5-8 в день. Повторил что уже проходил и за пару месяцев добрался уже до 20-го уровня, освоив JavaCore, основы многопоточности, несколько паттернов и т.д. А уже к концу августа начал знакомиться с HTML, CSS, GIT, JSP и т.д... ну а дальше я уже писал. Сейчас курс Джавараш пока не прохожу - полностью сосредоточен на работе с Javascript, Node.js и другими вешами.
У меня только один вопрос: а почему у вас после написания первой строчки (ниже главного метода) всегда создаётся лишний пробел слева? Глаз режет =) Это глюк или у этого есть какое-то объяснение или применение?
Спасибо за урок!
У меня валилась ошибка scanner is never closed
в конце дописал scanner.close(); мне помогло - может еще кому пригодиться
А как задекларировать переменную так, чтобы его было видно из других методов?
Писала Цикл всё также как на уроке показываете, а выдаёт в результате много строк и цифры ввести нельзя. уже и на других компах попробовала и перепроверила нет ли ошибок. нет всё равно, выдаёт какие-то ошибки. что делать? Scanner функция включается сразу!
Прекрасный курс, только не хватает заданий для закрепления материала...
А я извращенец: :) (Цикл "for" может заменить любой цикл "while", но может пострадать читаемость, ниже пример)
Scanner scn = new Scanner(System.in);
System.out.println("Type 5");
for (int value = scn.nextInt(); value != 5; value = scn.nextInt()) { //(1) принимаем с клавиатуры цифру(1), если не равна 5(!=), пишем сообщение(2), просим новую цифру.
System.out.println("Not correct, please type 5 "); //(2)
}
System.out.println("Thanks");
Это шикарно извращение) проверила-все работает) Как успехи в кодинге?
Добрый день такой вопрос.
Вот смотрите в цикле "do" мы пишем что надо ввести цифру 5, а в вайле , как раз ту самую цифру 5 . Так вот почему если запустить программу и ввести сразу цифру 5 , программа не пропустит , весь цикл "do" , и сразу напишет что введена цифра 5. Почему если я сразу ее впишу , она все равно из за цикла do потребует еще раз написать .
Вам наверняка уже не актууально, но может кому то поомжет.
Фишка в том, что когда в вайл стоит value==5 - условие получается false, и цикл прекращает выполнение после 1 прогона, если введена НЕ 5. Но если введена 5, то условие становится true, поскольку в нём стоит value==5. Следом за вайл выводится заготовленный System.out.println - который говорит то, что мы туда заранее записали.
А можно ли поставить два условия : while (field.gameIsNotOver() | field.gameIsNotOver2()); ?
Или как можно другим более качественным способом сделать чтобы работал do пока верны два условия?
Спасибо
Хоть 3, их может быть сколь-угодно много. Логические операции являются n-арными и могут иметь любое количество операндов. То бишь, количество операндов может быть от 2-х и больше. Используйте для этих целей конъюнкцию (&&) и дизъюнкцию (||).
Не поняла декларирование в пределах и за пределами фигурных скобок...
Всем доброго дня! Кто может подсказать, почему после написания "do " компилятор выдаёт ошибку!
P.s. пересмотрел 10 раз, всё сделано, как на видео!
Спасибо!
Работаешь в intelij? Там же можно навести на красное и посмотреть, в чем конкретно заключена ошибка. Может проблема и не в do, а скобку фигурную пропустил или еще чего
Здравствуйте! У меня вопрос по поводу места написания scanner = new Scanner(System.in);
В видео порядок такой:
import java.util.Scanner;
public class DoWhile {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int value;
do {
System.out.println("Введите цифру 5");
value = scanner.nextInt();
} while (value!=5);
System.out.println("Вы ввели 5");
}
}
//Получается система сначала считывает что-то, если это оказывается не 5, то она "ругается" и только потом //пользователь понимает, что нужно ввести 5.
А почему не так:
import java.util.Scanner;
public class DoWhile {
public static void main(String[] args) {
Scanner scanner;
int value;
do {
System.out.println("Введите цифру 5");
scanner = new Scanner(System.in);
value = scanner.nextInt();
}while (value!=5);
System.out.println("Вы ввели 5");
}
}
То есть программа сначала просит ввести цифру и лишь потом ее считывает. Так же логичнее? И что-то мне подсказывает, что прога будет работать быстрее?
Во втором примере вы каждую итерацию цикла (пока введенное число не равняется пяти) будете создавать новый объект класса Scanner. Это повлечет большие расходы по памяти и по времени. В первом же примере, объект класса Scanner создается один раз и в ходе работы программы используется только он.
Обьявлять новые обьекты настойчиво рекомендую вне циклов во избежание расходов ресурсов.
Новые обьекты - это когда пишете new .
javaRussia и Hana Ryzhuk Спасибо! Теперь понятно!
а почему сканер, а не буферриадер?
почему там восклицательный знак в (value!=5)?
Знак отрицания
@@alishevN я так поняла что value!=5 на простом языке означает "value НЕ пять"
@@Mariam_PinkLotus Да. value не равно пяти.
@@alishevN спасибо!)
Ахуеть
Я не могу понять, почему внутри цикла while опять сделали value = сканер, если это делали вне цикла? Объясните, пожалуйста
не знаю нужен лb тебе ещё ответ, но когда человек пишет число, кроме 5-ки, запускается код в цикле while и в этом же коде человеку дают повторную возможность ввести ещё раз value до тех пор пока value не станет равной 5
А вот вам практика :)
Написать программу которая генерирует случайное число каждый раз в цикле do while и просит у пользователя на ввод число до тех пор пока пользователь не угадает это самое случайно сгенерированное число от 1 до 10.
Бонусом: после первой неудачной попытки вывести на экран "Неправильно, попробуй еще раз".
Ответ
import java.util.Scanner;
import java.util.Random;
public class DoWhile {
public static void main(String [] args) {
int i, ranDigit;
boolean again = false;
Random rand = new Random();
Scanner scanner = new Scanner(System.in);
do {
if (again)
System.out.println("Try again");
again = true;
ranDigit = rand.nextInt(10 + 1);
// System.out.println(ranDigit);
System.out.println("Input digit that was guessed...");
i = scanner.nextInt();
} while (i != ranDigit);
System.out.println("Congratulation, you are Vanga");
}
}
import java.util.Scanner;
import java.util.Random;
class GuessTheNumber {
public static void main(String[] args) {
Random rand = new Random();
Scanner sc = new Scanner(System.in);
int num, random;
do {
random = rand.nextInt(10 + 1);
System.out.println("Guess number: ");
num = sc.nextInt();
if (num == random) {
System.out.println("You've guessed the number!");
} else {
System.out.println("Try again!");
}
} while(num != random);
}
}
у меня вот так получилось :)
кстати, как работает эта строчка random = rand.nextInt(10 + 1);, я её у тебя подсмотрел
@@sv0ice Только что перепроверил. Это строка с ошибкой, должно быть rand.nextInt(10) + 1.
Так мы получаем максимум из дипазаон исключительно т.е. все числа до 10 кроме самой десятки, и минимальный 0 включительно, но если полсе скобок добавить + n "где n будет любое число" то нижний диапазон будет увелчен на это самое число ровно как и верхний, в результате имеем: все числа от 1 до 10 т.к. 10 + 1 = 11 а это верхний диапазон без этого числа.
Зы объясняю я так себе, так что если не ясно то лучше спросить еще раз или гуглануть, статья явно будет лучше разжевывать вопрос.
@@newcomer3419 я понял спасибо, и ещё до твоего объяснения, я полазил по статейкам и нашёл инфу. Спасибо за то, что уделил время на объяснение! :)
@@newcomer3419 кст, как у тебя успехи в изучении?
А я вот никак не могу понять зачем ставить = new String зачем этот код нужен
Знак "=" в данном случае выступает в качестве знака операции присваивания. Это бинарная операция, которая позволяет присвоить результат выражения, который записывается справа от знака операции, так называемому именующему выражению (оно всегда расположено слева от знака операции и не может быть константой). Слева у нас находится ссылочная переменная в которую мы присваиваем адрес объекта, который создаём с помощью вызова конструктора. Собственно, подходя к сути вопроса, оператор new отвечает за вызов конструктора, а String - всего лишь класс, согласно шаблону которого мы создаём конкретный объект (экземпляр класса).
восклицательный знак обязателен если так то зачем он???
+ROMAN Wulf Восклицательный знак имеет значение НЕ, !(x==5) - x, который не равен 5
+javaRussia Спасиба
почему если сделать все точно также, но со String - код не работает полноценно. то есть постоянно просит ввести слово. цикл бесконечный получается
Как я понял, если мы сравниваем объекты и используем оператор ==, то мы получаем true, если ссылки указывают на один и тот же объект. Поэтому у тебя он и выводит false. Потому что ты сравниваешь 2 разных объекта в условии. Ссылки представляют из себя битовую последовательность и их биты отличаются друг от друга в данном случае, поскольку это 2 разных объекта.
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String country;
do {
System.out.println("Введите: Россия");
country = scanner.nextLine();
} while (country != "Россия");
}
Для сравнения ссылочных переменных на значение используй метод equals();
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String country;
do {
System.out.println("Введите: Россия");
country = scanner.nextLine();
} while (!country.equals("Россия"));
}
@@takamori9783 спасибо. Только начал изучать язык. Может можешь посоветовать для базы ещё что-то читать или смотреть? Может упражнения есть?
@@alexandrkomar4741 начинал с книги Изучаем Java. Помогает в самом начале пути. Сейчас читаю Хорстмана, но также смотрю видео курсы по типу этого.
@@alexandrkomar4741 До упражнений ещё не дошел.
@@takamori9783 а книга Хортсмана название какое?
Не сильное преимущество у do while. Там и там по 5 строк кода, только символов немного меньше
в автотестировании спасает иногда
Как очистить консоль в java? Есть что-то на подобие system("cls") как в C/C++ ?
Если ты имеешь ввиду консоль intellij idea - то там слева снизу есть значек корзины(Clear all)
javarush.ru/forum/157
@@АртемВодомер спасибо
что делает nextInt(); ????
Он у меня сканирует только цифры.
import java.util.Scanner;
public class DoWhile {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int value;
do{
System.out.println("Enter 5: ");
value = scanner.nextInt();
} while(value!=5);
System.out.println("You enter 5");
}
}
моно какие нибудь дз в дальнейшем давать чтоб своя практика был
import java.util.Scanner;
public class doWhileCycle {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int damage;
int hp = 100;
do{
System.out.println("нанести урон");
damage = scanner.nextInt();
hp = hp - damage;
System.out.println("Ви нанесли урона: " + damege+" осталось здоровя: "+hp);
}while (damage < hp);
System.out.println("Убито");
}
}
что значит ! в Цикл do...while.?
это знак вопроса
Ничего не понятно, пишет код значения не объясняет
где 6 и 7?
Можно же так сделать и тогда "do" не понадобится:
int value = 1; //или любое число, кроме 5
while (value!=5){
System.out.println("Введи число 5");
value = scanner.nextInt();
}
А теперь попробуй не инициализировать переменную, а просто её объявить
что делать если у меня вместо русских слов вот такие символы ����� 5
у меня было тоже самое, прогугли "русские символы в консоли intelij idea", тебе на stack over flov высветится решение проблемы
Не знаю почему, но первый вариант кода у меня не работал :D Хотя общий смысл понятен)
наверное пропустил строку вывода на экран System. out println после объявления класса Scanner в самом начале. Я пропустил и у меня ничего на экран не выводило, но ждало пока я не введу 5. Пришлось завершить исполнение и дописать, потом норм заработало.
Извините за такой глупый вопрос, но разве объект и переменная это не одно и тоже?
Это не одно и то же.
хуй и трамвайная ручка очень похожи! будь бдителен и не перепутай
дизлайк поставил только один человек, который походу так и не понял тему
а
мелко
почему в слове введи две прописных буквы?
System.out.println("Спасибо автору, курс реально топчик! Отлично объясняешь и все по делу. Видел похожие курсы, где, написано"Для начинающих", но поймут только те кто имел дело с программированием до. А у тебя реально для самых новичков.");
Спасибо
Спасибо!
Спасибо!