import java.util.*;
public class GuessingGame {
public static void main( String[] args ){
int x = getRandomNumber();
int v = 0;
int y = getGuessFromUser();
output(x,y);
}
public static int getRandomNumber() {
return (int)(Math.random()*25)+1;
}
public static int getGuessFromUser() {
Scanner keyboard = new Scanner(System.in);
int y;
do {
System.out.print("Enter a number between 1 and 25: ");
y = keyboard.nextInt();
} while(y <= 0 || y > 25);
return y;
}
public static void output( int x, int y )
{
int v = 0;
do {
if(x > y)
System.out.println("TOO LOW");
if(x < y)
System.out.println("TOO HIGH");
} while( x != y );
do {
v++;
System.out.print("YOU ARE CORRECT! IT TOOK YOU " + v + " GUESSES!");
} while( x == y );
}
}
当有人猜到一个数字时,循环不会结束。 我需要循环输出TOO HIGH,TOO LOW或CORRECT,然后让用户再次猜测。 相反,它会进入连续循环。
答案 0 :(得分:-1)
do{
if(x > y)
System.out.println("TOO LOW");
if(x < y)
System.out.println("TOO HIGH");
}while(x!=y);
在循环中没有更新x或y的位置,因此如果它进入循环,它将始终运行。
相反,两种可能性是输出返回一个布尔值,基于猜测是否正确并在其上循环或更新输出中循环中的变量。
答案 1 :(得分:-1)
你永远不会退出while循环,因为你永远不会改变你的x和y值,根据定义你会导致你无限循环。
你可以做的是让用户使用你的函数选择不同的数字,只要这两个数字不相同:确保你首先创建java类实例对象:
public class GuessingGame{
public static void main( String[] args ){
int x=getRandomNumber();
int v=0;
int y=getGuessFromUser();
new myGuessingGame = new GuessingGame();
myGuessingGame.output(x,y);
}
然后每当两个数字x和y不匹配时重新调用该方法:
do{
if(x > y) {
System.out.println("TOO LOW, try picking different x and y numbers:");
x=myGuessingGame.getRandomNumber();
y=myGuessingGame.getGuessFromUser();
v++;
}
if(x < y)
System.out.println("TOO HIGH, try picking different x and y numbers");
x=myGuessingGame.getRandomNumber();
y=myGuessingGame.getGuessFromUser();
v++;
}while(x!=y);
System.out.print("YOU ARE CORRECT! IT TOOK YOU " + v + " GUESSES!");
}
如果您只想更改x,但保持相同的y,则代替
x=myGuessingGame.getRandomNumber();
y=myGuessingGame.getGuessFromUser();
你只需要做
x=myGuessingGame.getRandomNumber();
希望有所帮助!