编写条件语句

Jen*_*Rut 3 java conditional

我是一名学习Java的学生,我一直困在家庭作业问题的最后一部分.我需要写一个条件语句来打印掷骰子是否是Yahtzee(所有五个骰子彼此相等).由于我使用了int而不是boolean,我无法弄清楚如何做到这一点.我知道我不能将int转换为布尔值,到目前为止,这个转换是我知道如何更改变量的唯一方法.任何帮助将不胜感激,因为实现我正在寻找的方式已经超出了我现在所能理解的程度.这就是我所拥有的,问题在于倒数第二行.

import java.util.Random;

public class FiveDice_JLR
{
   //-----------------------------------------------------------------
   //  Generates random numbers in various ranges.
   //-----------------------------------------------------------------
   public static void main(String[] args)
   {
      Random generator = new Random();
      int die1, die2, die3, die4, die5;

      die1 = generator.nextInt(6)+1;
      System.out.println("Die 1: " + die1);

      die2 = generator.nextInt(6)+1;
      System.out.println("Die 2: " + die2);

      die3 = generator.nextInt(6)+1;
      System.out.println("Die 3: " + die3);

      die4 = generator.nextInt(6)+1;
      System.out.println("Die 4: " + die4);

      die5 = generator.nextInt(6)+1;
      System.out.println("Die 5: " + die5);


      **if(die1==die2&==die3==die4&==die5&&);**
      {
      System.out.println("Yahtzee!!!!");
      }

   }
Run Code Online (Sandbox Code Playgroud)

sma*_*c89 5

如果你只使用&,那就是按位AND,因此它会比较所有数字的位.你想要的是什么&&,这是合乎逻辑的:

if(die1 == die2 && die2 == die3 && die3 == die4 && die4 == die5) {
    // Something here...
}
Run Code Online (Sandbox Code Playgroud)

另请注意,每个&&运算符与==运算符一样,需要2个操作数才能正确比较


假设您的所有值都是正数,另一种检查所有数字是否相等的方法是将它们全部加起来并检查总和是否等于5其中一个值.

if((die1 + die2 + die3 + die4 + die5) == die1 * 5) {
    // Something here...
}
Run Code Online (Sandbox Code Playgroud)

这是做同样的事情并且更短,但是容易出错,因为您可能在将来决定生成负数(由于某种原因),或者决定使用更多骰子而忘记更改5为适当的数字等.一般来说,只要坚持第一个

  • 你们真的在争论这个吗?你让新手感到困惑.它是`&&`不是`&`,只是留给那些新的和这样一个简单的例子. (4认同)