我需要帮助解决在我的代码中编写布尔表达式的问题
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
括号内输出任何内容
为什么要这样做以及如何解决?
答案 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
语句。目前,这将永远打印这些东西,因为内部没有任何东西可以突破循环......