设置为true的变量不会进入while循环java

时间:2017-05-15 04:29:03

标签: java while-loop

我需要帮助解决在我的代码中编写布尔表达式的问题

import java.util.*;
import java.util.concurrent.ThreadLocalRandom;

public class Dudo

{

    public static void main(String[] args) 
    {
        // raise call  spot on  pass
        Scanner reader = new Scanner (System.in);
        boolean player1;
        boolean player2;        
        int dicep1 = 5;
        int dicep2 = 5;
        Random rand = new Random();
        int  n = rand.nextInt(6) + 1;
        int  y = rand.nextInt(6) + 1;
        System.out.println("Welcome to Dudo!");
        System.out.println("Rolling to see who goes first");
        {

            if (n > y )
            {
                System.out.println("Player 1 goes first");  
            }
            else if (n < y)
            {
                System.out.println("Player 2 goes first");
            }
            else if (n == y)
            {
                System.out.println("Player 2 goes first");
            }
            int[] Array;
            Array = new int [dicep1];
            for(int i=0;i<Array.length;i++)
            {
                Array[i] = randomFill();
            }

            int[] Array2;
            Array2 = new int [dicep2];
            for(int j=0;j<Array2.length;j++)
            {
                Array2[j] = randomFill2();
            }
            player1 = true;
            player2 = true;


            while ((player1 == true) && (player2 == true));
            {
                System.out.println("Player 1, your numbers are....." + Arrays.toString(Array)); 
                System.out.println("Player 2, your numbers are....." + Arrays.toString(Array2));
            }
            if ((player1 = false) || (player2 = false));
            {

            }
        }
    }               



    private static int randomFill2()
    {
        int randomNum = ThreadLocalRandom.current().nextInt(0, 6 + 1);
        return randomNum;
    }

    private static int randomFill() 
    {
        int randomNum = ThreadLocalRandom.current().nextInt(0, 6 + 1);
        return randomNum;
    }

}

player1和player2都设置为true

player1 = true;
player2 = true;

执行代码时,while循环不会识别出两个变量都是true并且没有显示输出,在这种情况下,是玩家为他们的五个输出的数字骰子

while ((player1 == true) && (player2 == true));
{
    System.out.println("Player 1, your numbers are....." + Arrays.toString(Array)); 
    System.out.println("Player 2, your numbers are....." + Arrays.toString(Array2));
}

我已尝试多次更改它的写入方式但我无法在while括号内输出任何内容

为什么要这样做以及如何解决?

1 个答案:

答案 0 :(得分:2)

while循环之后你有一个分号(请注意以下if语句会出现同样的问题)。这会导致循环体为空。之后的括号只是define a new scope

E.g。您的代码被视为:

while ((player1 == true) && (player2 == true)){/*do nothing*/}
//in a new (nested) scope do:
System.out.println("Player 1, your numbers are....." + Arrays.toString(Array)); 
System.out.println("Player 2, your numbers are....." + Arrays.toString(Array2));

根本不确定为什么在while循环中有这些语句,它应该是if语句。目前,这将永远打印这些东西,因为内部没有任何东西可以突破循环......