嗯,我有一个硬件问题,我只需要使用嵌套的while循环就根本不使用whiles,所以基本上我的代码已经写完了,但是它并不会运行循环的一部分,所以总是说是或否。它应该像这样
猜密码。
输入密码的最大值:10
已选择一个新的密码。
输入猜测:3
太低;再试一次。
输入猜测:8
太低;再试一次。
输入猜测:9
太低;再试一次。
输入猜测:10
您在4个猜测中获胜!
再次播放? (是/否)y
已选择一个新的密码。
输入猜测:7
太高;再试一次。
输入猜测值:3太低;再试一次。
输入猜测:5
您赢了3个猜想!
再次播放? (是/否)n
public static void main(String arg[])
{
int guess = 0,max,guesses = 0;
String response;
Scanner input= new Scanner(System.in);
System.out.println("Guess the secret number\n");
System.out.println("Enter maximum value for secret number: ");
max=input.nextInt();
int numbers=(int) (Math.random()* max) + 1;
while(true)
{
System.out.println("A new secret number has been chosen.");
while (guess!=numbers)
{
System.out.println("Enter guess");
guess=input.nextInt();
guesses++;
if (guess<numbers)
{
System.out.println("Two low; Try again ");
}
else if (guess>numbers)
{
System.out.println("To high; Try again");
}
}
System.out.println("You won in " + guesses + "!");
System.out.print("\nPlay again? (Y/N)");
response = input.next();
if(response.equalsIgnoreCase("y"))
{
continue;
}
else
{
break;
}
}
input.close();
}
(这就是我得到的)
输入密码的最大值: 5
已选择一个新的密码。
输入猜测 4
到高;再试一次
输入猜测 3
您赢了2!
再次播放? (是/否)y
已选择一个新的密码。
您赢了2!
再次播放? (是/否)y
已选择一个新的密码。
您赢了2!
再次播放? (是/否)
(因此循环不会调用以再次猜测)
答案 0 :(得分:0)
您需要重新初始化猜测和数字,才能开始新一轮游戏。
将这两行向下移动到外部 while 循环内:
int numbers=(int) (Math.random()* max) + 1;
int guess = 0, guesses = 0;
答案 1 :(得分:0)
您很亲密,但是每次获胜后都需要重置您的重要值。您可以通过将它们简单地移到外部嵌套循环中来做到这一点,这样,每次内部循环中断时,它们都会重置为您希望它们在每一轮猜谜游戏之前的状态。看到这里:
public static void main(String arg[])
{
Scanner input= new Scanner(System.in);
while(true)
{
int guess = 0,max,guesses = 0;
String response;
System.out.println("Guess the secret number\n");
System.out.println("Enter maximum value for secret number: ");
max=input.nextInt();
int numbers=(int) (Math.random()* max) + 1;
System.out.println("A new secret number has been choosen.");
while (guess!=numbers)
{
System.out.println("Enter guess");
guess=input.nextInt();
guesses++;
if (guess<numbers)
{
System.out.println("Two low; Try again ");
}
else if (guess>numbers)
{
System.out.println("To high; Try again");
}
}
System.out.println("You won in " + guesses + "!");
System.out.print("\nPlay again? (Y/N)");
response = input.next();
if(response.equalsIgnoreCase("y"))
{
continue;
}
else
{
break;
}
}
input.close();
}