Привет, у меня для тебя есть совет.
Я лично использовал бы Сканер вместо System.in.read. Сканер - это объект, который читает входные данные.
Чтобы создать его, просто наберите следующее:
Scanner sc = new Scanner(System.in); //System.in referes to a console input
Чтобы узнать, что набрал пользователь, используйте sc.nextLine();
, который возвращает, как я уже сказал, ввод. Однако он возвращает String, а не char. Таким образом, в этом случае вам также необходимо изменить тип 'ch'.
Для сравнения ответов с вводом вам необходимо использовать метод equals()
. По сути, если две вещи совпадают, возвращается true.
Тем не менее, ваш код должен выглядеть следующим образом:
Scanner sc = new Scanner(System.in);
String answer = "K",ch;
int i=0;
boolean correct = false;
while (!correct) {
System.out.println("I am Thinking of a letter between A and Z, can you guess it?");
ch = sc.nextLine();
i++;
if (!ch.toUpperCase().equals(answer)) { // or ch.equals(answer) == false
System.out.println("Wrong ! please try again");
}else{ //if they are the same
correct = true; //the answer is correct so you can leave the while loop
System.out.println("Correct!, you guessed after "+i+" attempts");
}
}
sc.close(); //you should always close a scanner after you use it, but you can ignore this step for now
Обратите внимание, что я также использовал метод под названием toUpperCase()
. Этот метод преобразует все символы строки в верхний регистр, поэтому, даже если вы введете «k» вместо «K», вы также выйдете из цикла.