编写条件语句

时间:2016-09-25 23:11:28

标签: 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!!!!");
      }

   }

3 个答案:

答案 0 :(得分:5)

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

if(die1 == die2 && die2 == die3 && die3 == die4 && die4 == die5) {
    // Something here...
}

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

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

if((die1 + die2 + die3 + die4 + die5) == die1 * 5) {
    // Something here...
}

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

答案 1 :(得分:2)

有两个运算符对于检查所有骰子的值是否相同非常重要:条件AND运算符&&)和相等 operator(==)。 Java documentation包含一些关于这些内容以及如何使用它们的详细信息。

有几点要记住这些。这两个运算符都是二进制运算符。它们在两个操作数上运行。例如a == ba的值与b进行比较。同样,如果a && btrue都是ab的评估结果为true

当然,当我们想要比较两个以上操作数的值时,这是一个挑战。假设我们有三个变量abc。我们如何检查它们都具有相同的值? (为简单起见,我们假设它们都是原始类型。)

我们知道如何检查ab是否相同:a == b

我们也知道如何检查bc是否相同:b == c

如果这两个都是真的那么,transitive property of equality我们就知道a也必须等于c。我们如何在一个声明中检查两个条件?当然,使用条件AND运算符:

a == b && b == c

这是一个只有三个变量的简单示例,但这可以扩展到任意数量的变量(例如,5个骰子的值)。试一试,看看你是否可以使用这两个操作符来实现它。

答案 2 :(得分:1)

您正在寻找的陈述是

if(die1==die2 && die2==die3 && die3==die4 && die4==die5)

或者,对于@ smac89和& duffymo的好处,使用&的版本:

if(die1==die2 & die2==die3 & die3==die4 & die4==die5)

由于完全评估所有内容而运行速度较慢,但​​在语义上相同。