Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java while loop赢了';t break(我也将我的条件设置为false)_Java_While Loop_Infinite Loop - Fatal编程技术网

Java while loop赢了';t break(我也将我的条件设置为false)

Java while loop赢了';t break(我也将我的条件设置为false),java,while-loop,infinite-loop,Java,While Loop,Infinite Loop,我做了一个东西,掷五个骰子,直到得到一个五种骰子。我会把我的代码贴在下面,这样你就可以看到了。如果五人行成功,我已将while条件设置为false。在它说“滚动…”之后什么也没发生。我应该使用.equals()吗 你没有在循环中重新滚动。如果roll不是0,它将是一个无限循环,一遍又一遍地打印“Invalid roll!”。这里很少有东西可以导致无限循环 第一个是你的roll变量总是zero你不是 再次滚动或不更改该变量 第二个是1到5个变量的可能性较小 正在执行if条件 if(2==1&&3=

我做了一个东西,掷五个骰子,直到得到一个五种骰子。我会把我的代码贴在下面,这样你就可以看到了。如果五人行成功,我已将while条件设置为false。在它说“滚动…”之后什么也没发生。我应该使用.equals()吗


你没有在循环中重新滚动。如果
roll
不是0,它将是一个无限循环,一遍又一遍地打印“Invalid roll!”。

这里很少有东西可以导致无限循环

  • 第一个是你的
    roll
    变量总是zero你不是 再次滚动或不更改该变量
  • 第二个是15个变量的可能性较小 正在执行
    if
    条件
  • if(2==1&&3==1&&4==1){
    rollCount++;
    滚动=假;
    }

    另外,您不需要使用
    while(rolling==true)
    而是可以使用
    while(rolling)
    ,因为您的滚动变量初始化为true

    这是我想到的

                while(rolling) {
                    switch(roll) {
                    case 0 :
                        if(two == one && three == one && four == one) {
                            rollCount++;
                            rolling = false;
                        }
                        else {
                            rollCount++;
                            System.out.println("If you want to stop roll press -1: ");
                            System.out.println("Or type 0 to roll again.");
                            roll = scan.nextInt();
    
                            if(roll == -1){
                                System.out.println("Yahtzee!");
                                System.out.println("Took " + rollCount + " rolls!");
                                return;
                            }
                        }
                        break;
                    default :
                        System.out.println("Invalid roll!");
                        roll = 0;
                    }
                }
    
                System.out.println("Yahtzee!");
                System.out.println("Took " + rollCount + " rolls!");
    

    如果
    roll
    不是0,则需要将
    rolling
    更改为false

    default :
        System.out.println("Invalid roll!");
        rolling = false;      
    

    因此,当您的
    while
    循环重新运行时,它将注意到
    false
    条件并中断。

    第二次滚动到哪里?
    while(rolling==true){
    while(rolling)
    相同。永远不要显式地将布尔值与true(或false)进行比较,这样会更加冗长,而且编写
    while时也非常容易(rolling=true)
    “如果五人行成功,则将我的while条件设置为false”你的代码中的条件看起来像是只检查一种类型的4。它检查1==2,1==3,1==4。而且,1,2,3,4和5在你的整个程序中都不会改变-它们在整个时间都是相同的。另外,我认为所有的5个骰子都必须相等才能得到一个Yahtzee!你的代码会给我一个Yahtzee!当前四个匹配时。祝贺你已经11岁了。在做任何事情之前,你必须学习如何在IDE中使用调试器。它允许你一次一行地检查代码,并在执行过程中检查变量的值。如果你使用调试器,你会很容易发现代码中的错误,而且学到的远不止在这里提问。首先使用调试器,然后在遇到无法向自己解释的问题时在这里提问。
    default :
        System.out.println("Invalid roll!");
        rolling = false;