如何执行一段代码而不绕过另一段?JAVA

如何执行一段代码而不绕过另一段?JAVA,java,Java,这个标题可能信息量不大。但事情是这样的 我希望用户在第二次经过时执行代码。我所做的,是做一个if语句,但现在我注意到,有了它,其余的都没有被执行 Scanner input = new Scanner(System.in); Random dice = new Random(); int counter = 1; boolean playing = true; boolean firstTimmer = true; boolean got = true; System.out.println(

这个标题可能信息量不大。但事情是这样的

我希望用户在第二次经过时执行代码。我所做的,是做一个if语句,但现在我注意到,有了它,其余的都没有被执行

Scanner input = new Scanner(System.in);
Random dice = new Random();
int counter = 1;
boolean playing = true;
boolean firstTimmer = true;
boolean got = true;

System.out.println("Welcome to numberMind! From 0 to x, you'll try to guess the random number!");
System.out.println("To quit, guess \"-1\".");
System.out.print("Insert x: ");
int x = 1+input.nextInt();
int objective = dice.nextInt(x);
System.out.print("Ok, I'm ready! What's your first guess? ");
int guess = input.nextInt();


while (playing){
    if (guess == -1){
        playing = false;
        break;
    }else if (!firstTimmer){
        got = true;
        System.out.print("Do you want to change the number range? Yes(1) No(2)");
        guess = input.nextInt();
        if (guess == 1){
            System.out.print("Insert the new x: ");
            x = 1+input.nextInt();
        }else if(guess == 2){
            System.out.println("Let's go then!");
        }else{
            System.out.print("I didn't ask for that number did I? x won't change.");
        }
    }else{
        while(got){
            if (objective == guess){
                firstTimmer = false;
                System.out.println("You guessed it in "+counter+" times!");
                counter = 1;
                System.out.print("Do you want to paly again? Yes(1) No(2) ");
                guess = input.nextInt();
                if (guess == 1){
                    System.out.println("Great! Here we go...");
                    got = false;
                    break;
                }else if (guess == 2){
                    System.out.print("Thanks for playing!");
                    got = false;
                    playing = false;
                }else{
                    System.out.println("We didn't ask for that. NOW YOU PLAY SOME MORE!");
                    got = false;
                    break;
                }
                break;
            }else if (guess == -1){
                System.out.println("You quited :(");
                break;
            }else if (guess == -2){
                System.out.println("The correct answer is "+ objective);
            }else if (counter >= 5 && (counter -5) % 3 == 0 ){
                if (objective % 2 == 0){
                    System.out.println("The number is pair.");
                }else{
            System.out.println("The number is odd.");
                }
            }
            System.out.println("You have tryed " + counter++ + " times.");
            System.out.print("What's your guess? ");
            guess = input.nextInt();
        }
    }
}

我要运行的代码位于最后一个else之后。我看不出有什么办法解决它。谢谢你

我们先问问自己,什么时候才能完成
其他的
:什么时候
猜猜!=-1
firstTimmer==true
。您从未设置过
firstTimmer
,它需要设置为true才能通过
else
块。您还需要删除
else if
中的
中断
,否则它将永远无法在下一次迭代中到达else

另外,在
if
语句中同时包含
playing=false
break
,这是多余的。两者都会各自做同样的事情

while (playing){
    if (guess == -1){
        playing = false;
        break;
    }else if (!firstTimmer){
        got = true;
        System.out.print("Do you want to change the number range? Yes(1) No(2)");
        guess = input.nextInt();
        if (guess == 1){
            System.out.print("Insert the new x: ");
            x = 1+input.nextInt();
        }else if(guess == 2){
            System.out.println("Let's go then!");
        }else{
            System.out.print("I didn't ask for that number, x won't change.");
        }
        firstTimmer = true;
        //break;
    }else{

我们先问问自己,什么时候才能完成
else
:什么时候
guess!=-1
firstTimmer==true
。您从未设置过
firstTimmer
,它需要设置为true才能通过
else
块。您还需要删除
else if
中的
中断
,否则它将永远无法在下一次迭代中到达else

另外,在
if
语句中同时包含
playing=false
break
,这是多余的。两者都会各自做同样的事情

while (playing){
    if (guess == -1){
        playing = false;
        break;
    }else if (!firstTimmer){
        got = true;
        System.out.print("Do you want to change the number range? Yes(1) No(2)");
        guess = input.nextInt();
        if (guess == 1){
            System.out.print("Insert the new x: ");
            x = 1+input.nextInt();
        }else if(guess == 2){
            System.out.println("Let's go then!");
        }else{
            System.out.print("I didn't ask for that number, x won't change.");
        }
        firstTimmer = true;
        //break;
    }else{
(一)这类事情的标准模式是:

boolean firstTime = true;
boolean playing = true;
int guess = 0;
while (playing) {
    if (guess == -1) {
        playing = false;
        // NOTE: break is redundant with playing flag, here
    } else if (!firstTime) {
        got = true;
        System.out.print("Do you want to change the number range? Yes(1) No(2)");
        guess = input.nextInt();
        if (guess == 1) {
            System.out.print("Insert the new x: ");
            x = 1+input.nextInt();
        } else if(guess == 2) {
            System.out.println("Let's go then!");
        } else {
            System.out.print("I didn't ask for that number, x won't change.");
        }
        firstTime = false;
    } else {
        //... do other work here.
    }
}
此外,aliteralmind提到的模式是上述模式的更灵活版本,允许您为循环中的每次“访问”提供不同的选项。如有必要,我可以用一个完整的例子进一步描述。

(一)这类事情的标准模式是:

boolean firstTime = true;
boolean playing = true;
int guess = 0;
while (playing) {
    if (guess == -1) {
        playing = false;
        // NOTE: break is redundant with playing flag, here
    } else if (!firstTime) {
        got = true;
        System.out.print("Do you want to change the number range? Yes(1) No(2)");
        guess = input.nextInt();
        if (guess == 1) {
            System.out.print("Insert the new x: ");
            x = 1+input.nextInt();
        } else if(guess == 2) {
            System.out.println("Let's go then!");
        } else {
            System.out.print("I didn't ask for that number, x won't change.");
        }
        firstTime = false;
    } else {
        //... do other work here.
    }
}

此外,aliteralmind提到的模式是上述模式的更灵活版本,允许您为循环中的每次“访问”提供不同的选项。如果有必要,我可以用一个完整的例子进一步描述。

您应该尝试在代码中每次解决一个问题

现在你有很多复杂的代码,很难阅读和使用

关于您第一次访问的问题的答案。只需在循环之前移动它,然后在必要时启动循环

尝试将问题划分为子程序(方法)并一次解决它们

displayWelcomeScreen();
preapreGameContext();

do {
 if(doUserWantToChange()) {
   changeTheGameContext();
 }
 int gues = askForGues();

 hasUserGuesCorrectly();

} while(isTheGameOn());

最后的代码应该与上面的示例更相似。

您应该尝试在代码中每次解决一个问题

现在你有很多复杂的代码,很难阅读和使用

关于您第一次访问的问题的答案。只需在循环之前移动它,然后在必要时启动循环

尝试将问题划分为子程序(方法)并一次解决它们

displayWelcomeScreen();
preapreGameContext();

do {
 if(doUserWantToChange()) {
   changeTheGameContext();
 }
 int gues = askForGues();

 hasUserGuesCorrectly();

} while(isTheGameOn());

最终的代码应该与上面的示例更相似。

的确如此!通过更改布尔值,我可以使用代码。解决了,真的没有想到。如果你的问题解决了,请单击我答案旁边的复选标记并将其标记为已解决。这将确保它不会作为一个未回答的问题出现在未来的搜索中。如果你愿意的话,你也可以投票支持我的答案。我想我已经做了标记。而且还投了赞成票!再次感谢你!通过更改布尔值,我可以使用代码。解决了,真的没有想到。如果你的问题解决了,请单击我答案旁边的复选标记并将其标记为已解决。这将确保它不会作为一个未回答的问题出现在未来的搜索中。如果你愿意的话,你也可以投票支持我的答案。我想我已经做了标记。而且还投了赞成票!再次感谢是的,我知道如何在柜台上使用它。谢谢你的时间是的,我知道怎么在柜台上用。谢谢你的时间