好吧,我有这个hw问题,我必须只使用嵌套while循环没有做什么。所以基本上我有代码下来,但它不会运行部分循环,它一直说是或否。它假设是这样的
猜猜秘密号码。
输入密码的最大值: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 / N)Y
已选择一个新的密码。
你赢了2!
再玩一次? (Y / N)Y
已选择一个新的密码。
你赢了2!
再玩一次? (Y / N)
(所以循环不会再次调用猜测)
您需要重新初始化猜测和数字才能开始新一轮游戏。
在外部while循环内向下移动这两行:
int numbers=(int) (Math.random()* max) + 1;
int guess = 0, guesses = 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();
}