Java 嵌套while循环赢了';不要要求再次正确运行程序

Java 嵌套while循环赢了';不要要求再次正确运行程序,java,output,nested-loops,Java,Output,Nested Loops,嗯,我有一个硬件问题,我必须只使用嵌套循环,而不使用循环。所以基本上我有代码,但它不会运行循环的一部分,它一直说是或否。它应该是这样的 猜猜秘密号码 输入密码的最大值:10 已选择一个新的密码 输入猜测:3 太低;再试一次 输入猜测:8 太低;再试一次 输入猜测:9 太低;再试一次 输入猜测:10 你猜了4次就赢了 再来一次?(是/否)是 已选择一个新的密码 输入猜测:7 过高;再试一次 输入猜测:3太低;再试一次 输入猜测:5 你猜了三次就赢了 再来一次?(是/否)否 publicstatic

嗯,我有一个硬件问题,我必须只使用嵌套循环,而不使用循环。所以基本上我有代码,但它不会运行循环的一部分,它一直说是或否。它应该是这样的

猜猜秘密号码

输入密码的最大值:10

已选择一个新的密码

输入猜测:3

太低;再试一次

输入猜测:8

太低;再试一次

输入猜测:9

太低;再试一次

输入猜测:10

你猜了4次就赢了

再来一次?(是/否)是

已选择一个新的密码

输入猜测:7

过高;再试一次

输入猜测:3太低;再试一次

输入猜测:5

你猜了三次就赢了

再来一次?(是/否)否

publicstaticvoidmain(字符串arg[])
{
int guess=0,max,guess=0;
字符串响应;
扫描仪输入=新扫描仪(System.in);
System.out.println(“猜测密码”);
System.out.println(“输入密码的最大值:”);
max=input.nextInt();
整数=(int)(Math.random()*max)+1;
while(true)
{
System.out.println(“已选择新的密码”);
while(猜测!=数字)
{
System.out.println(“输入猜测”);
guess=input.nextInt();
猜测++;
如果(猜测数字)
{
System.out.println(“高;再试一次”);
}
}
System.out.println(“您在“+猜测+”!”)中获胜;
系统输出打印(“\N再次显示?(Y/N)”);
response=input.next();
if(响应等信号情况(“y”))
{
继续;
}
其他的
{
打破
}
}
input.close();
}
(这就是我得到的)

输入密码的最大值: 五,

已选择一个新的密码

输入猜测 四,

高;再试一次

输入猜测 三,

你在2分钟内赢了

再来一次?(是/否)是

已选择一个新的密码

你在2分钟内赢了

再来一次?(是/否)是

已选择一个新的密码

你在2分钟内赢了

再来一次?(是/否)


(因此循环不会再次调用猜测)

您需要重新初始化猜测和数字来开始新一轮游戏

向下移动这两条线,在外部的内部,同时循环:

int numbers=(int) (Math.random()* max) + 1;
int guess = 0, guesses = 0;

您需要重新初始化猜测数字,以开始新一轮游戏

向下移动这两条线,在外部的内部,同时循环:

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();
}
publicstaticvoidmain(字符串arg[])
{
扫描仪输入=新扫描仪(System.in);
while(true)
{
int guess=0,max,guess=0;
字符串响应;
System.out.println(“猜测密码”);
System.out.println(“输入密码的最大值:”);
max=input.nextInt();
整数=(int)(Math.random()*max)+1;
System.out.println(“已选择新的密码”);
while(猜测!=数字)
{
System.out.println(“输入猜测”);
guess=input.nextInt();
猜测++;
如果(猜测数字)
{
System.out.println(“高;再试一次”);
}
}
System.out.println(“您在“+猜测+”!”)中获胜;
系统输出打印(“\N再次显示?(Y/N)”);
response=input.next();
if(响应等信号情况(“y”))
{
继续;
}
其他的
{
打破
}
}
input.close();
}

您已接近成功,但每次获胜后都需要重置重要值。你可以通过简单地将它们移动到你的外巢循环中来实现这一点,这样每当内巢循环破裂时,它们就会重置为你在每轮猜谜游戏之前想要的状态。请看这里:

 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();
}
publicstaticvoidmain(字符串arg[])
{
扫描仪输入=新扫描仪(System.in);
while(true)
{
int guess=0,max,guess=0;
字符串响应;
System.out.println(“猜测密码”);
System.out.println(“输入密码的最大值:”);
max=input.nextInt();
整数=(int)(Math.random()*max)+1;
System.out.println(“已选择新的密码”);
while(猜测!=数字)
{
System.out.println(“输入猜测”);
guess=input.nextInt();
猜测++;
如果(猜测数字)
{
System.out.println(“高;再试一次”);
}
}
System.out.println(“您在“+猜测+”!”)中获胜;
系统输出打印(“\N再次显示?(Y/N)”);
response=input.next();
if(响应等信号情况(“y”))
{
继续;
}
其他的
{
打破
}
}
input.close();
}