Не могли бы вы помочь мне разобраться, почему утверждение в теле метода бесконечно замкнуто?Бесконечный цикл в теле метода
Я создал класс Guesser
. Ввод берется у пользователя как целое число в методе main()
и определяется ответ как целое число, определенное в методе main()
.
Сам метод предназначен для проверки угаданного параметра, введенного пользователем в соответствии с определенным ответом (который равен 5), и возвращает вывод на консоль либо «вы ошибаетесь ...», либо «Правильно!».
Итак, всякий раз, когда я вставляю 5, он работает хорошо с одной проблемой, похоже, что введенное значение передается методу дважды. И это создает проблему, так как всякий раз, когда я ввожу 4, результат корректно проверяется, а результат, сгенерированный в консоли, возвращает правый оператор, но затем значение передается и снова возвращается, возвращаясь, попадая в цикл, бесконечно возвращая тот же оператор.
Вот код:
import java.util.Scanner;
//class begins here
class Guesser {
int answer1;
int guess;
//constructor
Guesser(int ans, int gs) {
answer1 = ans;
guess = gs;
}
//Method starts here
void method1() {
//Do control statement comes here
do {
System.out.println("Guess the number...");
if(this.guess != this.answer1) {
System.out.print("Your guess is worng. You're too ");
if(this.guess < this.answer1) System.out.println("low");
else System.out.println("high");
} //end of if statement
} while (this.guess != this.answer1); //end of Do Control Statement
System.out.println("Correct!");
} //end of method1
} //End of the class Guesser
//Main class comes here
public class DemoGuess {
public static void main(String args[]) {
System.out.println("Guess the number...");
int input;
Scanner in = new Scanner(System.in);
input = in.nextInt();
Guesser ActionGuess = new Guesser(5,input);
ActionGuess.method1();
} //end of main() method
} //end of DemoGuess class
Вы никогда ничего не сделаете, чтобы изменить «ответ1» или «угадать» внутри своей петли. – chrylis