Число которое загадал пользователь
не ругайте и не кидайте камнями, но меня заклинило. код работает "как бы" , но вот если он доходит до диапазона например 66 - 67 или доходит до предела (1 или 100), он дальше генерирует числа 67 или 1 с 100, и получается что зависает. Уже и считал диапазон, что бы разница между мин и мах была <1, и рандомное число, что генерируется, было в диапазоне не больше чем на один, но все не хочет работать...кто может подсказать??
public class Ugadaj {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("Загадай число от 1 до 100 и я его удадаю. Как тебя зовут? ");
String name = in.nextLine();
int max = 100;
int min = 1;
int scor = 0;
int random = (int) Math.round(Math.random() * max);
System.out.println("Очень приятно "+name+". Число которое Ты загадал - " + random + " ? (1-ДА,0-НЕТ)");
int i = in.nextInt();
while(i!=1) {
System.out.println("Твоё число больше " + random + "? (1-ДА,0-НЕТ)");
i = in.nextInt();
if (i == 1) {
min = random + 1;
int random2 = min + (int) (Math.random() * ((max - min) + 1));
random = random2;
scor++;
System.out.println("Ты загал число " + random + " ? (1-ДА,0-НЕТ)" + " Сейчас диапозон : "
+ min + " - " + max);
i = in.nextInt();
} else {
max = random - 1;
int random2 = min + (int) (Math.random() * ((max - min) + 1));
random = random2;
scor++;
System.out.println("Ты загал число " + random + " ? (1-ДА,0-НЕТ)" + " Сейчас диапозон : "
+ min + " - " + max);
i = in.nextInt();
}
}
System.out.println("Твоё число было " + random + " . Угаданно с " + scor + " попыток");
}
}
Ответы (1 шт):
Автор решения: fox
→ Ссылка
// вот пример моего старенького кода. глянь может пригодиться.Код рабочий!
package Game;
import java.util.Scanner;
public class Б_М1 {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); /* ввод с клавиатуры
* сохраняет его в перем.
*/
String newGame =""; // перем. повторения
// цикла do
int n2 = (0); // переменная подсчета
// ходов
// основной цикл ///////////////////////////////////////////////////////////////
do {
int N1 = (int)(Math.random() * 100 + 1); // генерация случайного числа
// от 0 до 100,9999
//System.out.println(N1); // сгенерированное число
int guess = 0; // переменная , хранения ответов
System.out.println("Здравствуй мой господин!");
// ЦИКЛ УГАДЫВАНИЯ WHILE ///////////////////////////////////////////////////////
while (guess != N1) {
System.out.println("введи число от 0 до 100:");
guess = scan.nextInt(); // ожидает следующее значение переменной
// ответа введенное пользователем
if (guess < N1)
System.out.println(guess + " мало, соберись!");
else if (guess > N1) // проверяет второе условие
System.out.println(guess + " дохрена, соберись!");
else // проверяет третье условие
System.out.println(guess + ". Это победа мой господин!");
// ЦИКЛ подсчета ходов /////////////////////////////////////////////////////////
n2 = (++n2);
switch (n2) {
case 1,2,3,4:
System.out.println(" Это " + n2 + " попытка!");
break;
default:
System.out.println(" Это " + n2 + " попытка!");
System.out.println("Ну ты... долго!!!");
}
}
System.out.println("ещё разочек? (Y/N)");
newGame = scan.next(); // сканирует ввод с клавиатуры
// символа или группы символов
} while (newGame.equalsIgnoreCase("y")); // закрытие цикла do,
// если ввести "y" цикл возобновится
System.out.println("Чао мой господин!");
scan.close(); // закрыть поток ввода
}
}