|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
22.01.2020, 21:54 | #1 |
Новичок
Джуниор
Регистрация: 22.01.2020
Сообщений: 3
|
Изучаю язык Java Первые трудности.
Здравствуйте.
Недавно начал изучать я зык Java, для этих цели купил книгу "Кэти Сьерра и Берт Бейтс Изучаем JAVA", и до этого момента у меня всё шло хорошо, пока не дошел до наследования классов. остановился на примере программы которая генерирует случайное число, которое, в свою очередь должны таким же случайным образом угадать участники. Привет кода указан ниже. Класс: Player public class Player { int number = 0; public void guess(){ number=(int)(Math.random()*10); System.out.println("Думаю,это число " +number); } } Класс: GusseGame public class GuessGame { Player p1; Player p2; Player p3; public void startGame(){ p1 = new Player(); p2 = new Player(); p3 = new Player(); int guessp1=0; int guessp2=0; int guessp3=0; boolean p1isRight = false; boolean p2isRight = false; boolean p3isRight = false; int targetNumber=(int)(Math.random()*10 ); System.out.println("Я загадываю число от 0 до 9..."); System.out.println("Число которое нужно угадать - "+targetNumber); while(true){ p1.guess(); p2.guess(); p3.guess(); guessp1=p1.number; System.out.println("Первый игрок думает что это "+ guessp1); guessp2=p2.number; System.out.println("Второй игрок думает что это "+ guessp2); guessp3=p3.number; System.out.println("Третий игрок думает что это "+ guessp3); if (guessp1 == targetNumber){ p1isRight = true; } if (guessp2 == targetNumber){ p2isRight = true; } if (guessp3 == targetNumber){ p3isRight = true; } if (p1isRight || p2isRight || p3isRight){ System.out.println("У нас есть победитель!"); System.out.println("Первый игрок угадал? " + p1isRight); System.out.println("Второй игрок угадал? " + p2isRight); System.out.println("Третий игрок угадал? " + p3isRight); System.out.println("Конец игры!"); } else { System.out.println("Игроки должны попробовать ещё раз."); } }}} Класс: GameLauncher public class GameLauncher { public static void main (String[]args){ GuessGame game = new GuessGame(); game.startGame(); } } По задумке авторов программа должна выводить подобный результат: Я загадываю число от 0 до 9... Число которое нужно угадать - 7 Думаю,это число 1 Думаю,это число 2 Думаю,это число 3 Первый игрок думает что это 1 Второй игрок думает что это 2 Третий игрок думает что это 3 Игроки должны попробовать ещё раз. Число которое нужно угадать - 7 Думаю,это число 7 Думаю,это число 2 Думаю,это число 3 Первый игрок думает что это 7 Второй игрок думает что это 2 Третий игрок думает что это 3 У нас есть победитель! Первый игрок угадал? true Вместо этого программа впадает в бесконечный цикл, из-за не понимания этой ошибки я не могу двигаться дальше. Для написания программного кода использовал IntelliJ IDEA Community Edition 2019.1.3 x64 |
25.01.2020, 14:51 | #2 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
Давайте посмотрим. У вас бесконечный цикл while. Как с него выйти?
Я думаю если кто-то угадал число (1, 2, 3 игрок), то нужно остановить бесконечный цикл. Так? Есть несколько способов, например break. Код:
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
27.01.2020, 18:30 | #3 |
Новичок
Джуниор
Регистрация: 22.01.2020
Сообщений: 3
|
Спасибо большое я исправил и добавил break.
... if (p1isRight | p2isRight | p3isRight){ System.out.println("У нас есть победитель!"); System.out.println("Первый игрок угадал? " + p1isRight); System.out.println("Второй игрок угадал? " + p2isRight); System.out.println("Третий игрок угадал? " + p3isRight); System.out.println("Конец игры!"); break; }... Но есть вопрос! Когда программа выводит следующий результат: ... У нас есть победитель! Первый игрок угадал? false Второй игрок угадал? true Третий игрок угадал? false Конец игры!... Как сделать так чтобы она выводила только строчку с значением true, то есть:"Второй игрок угадал? true"? |
28.01.2020, 02:04 | #4 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
Самое простое - разделить условие на три:
Код:
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
28.01.2020, 21:03 | #5 |
Новичок
Джуниор
Регистрация: 22.01.2020
Сообщений: 3
|
Мне не до конца понятно каким образом разделить? Так как код что с "|"-И и с "||"-ИЛИ, по результату не чем не отличаются:
... if (p1isRight || p2isRight || p3isRight){ System.out.println("У нас есть победитель!"); System.out.println("Первый игрок угадал? " + p1isRight); System.out.println("Второй игрок угадал? " + p2isRight); System.out.println("Третий игрок угадал? " + p3isRight); System.out.println("Конец игры!"); break; } ... ... if (p1isRight | p2isRight | p3isRight){ System.out.println("У нас есть победитель!"); System.out.println("Первый игрок угадал? " + p1isRight); System.out.println("Второй игрок угадал? " + p2isRight); System.out.println("Третий игрок угадал? " + p3isRight); System.out.println("Конец игры!"); break; } ... Они выводят абсолютно одинаковый результат. |
30.01.2020, 23:25 | #6 |
C/C++, Java
Участник клуба
Регистрация: 28.03.2012
Сообщений: 1,679
|
А есть такая вероятность, что 2 игрока угадают число или все? Или никто)))
Вам нужно для каждого игрока проверять. Код:
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости" Сложность - враг простоты и удобства! |
17.03.2020, 12:24 | #7 |
Новичок
Джуниор
Регистрация: 02.03.2020
Сообщений: 3
|
надо выйти из без конечного цыкла
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Java: Дан двумерный массив чисел А размером 6х6 и одномерный массив Х из 6-ти чисел. Заменить первые три строки массива A | vikysha55 | Помощь студентам | 1 | 16.04.2014 10:50 |
Изучаю язык запросов 1С. Первый же запрос не работает | so1idsnake | Помощь студентам | 5 | 16.08.2013 15:36 |
Первые трудности с программированием на C | ol-k_34 | Общие вопросы C/C++ | 18 | 23.02.2012 08:51 |
Java как первый язык. | alondrealit | Свободное общение | 21 | 16.12.2011 21:24 |
C# и Java трудности. | LaiQue | Общие вопросы .NET | 0 | 24.04.2010 15:50 |