简化很长时间的陈述

时间:2015-11-28 02:55:34

标签: java

我必须使用java创建一个yahtzee程序。

在这个程序中,我必须在每次掷骰子时比较面值。我有一个ArrayList的5个骰子。

有没有办法比较这些模具而没有极长的if语句?

if语句必须将1个骰子值与其他4个骰子值进行比较,然后对其他4个骰子进行比较。这将是非常长的,我确信它可以简化,但我不知道如何。对此问题表示赞赏。 这是骰子类

public class Die
{
   private final int MAX = 6;  // maximum face value

   private int faceValue;  // current value showing on the die

   //-----------------------------------------------------------------
   //  Constructor: Sets the initial face value.
   //-----------------------------------------------------------------
   public Die()
   {
      faceValue = 1;
   }

   //-----------------------------------------------------------------
   //  Rolls the die and returns the result.
   //-----------------------------------------------------------------
   public int roll()
   {
      faceValue = (int)(Math.random() * MAX) + 1;

      return faceValue;
   }

   //-----------------------------------------------------------------
   //  Face value mutator.
   //-----------------------------------------------------------------
   public void setFaceValue(int value)
   {
      faceValue = value;
   }

   //-----------------------------------------------------------------
   //  Face value accessor.
   //-----------------------------------------------------------------
   public int getVal()
   {
      return faceValue;
   }

   //-----------------------------------------------------------------
   //  Returns a string representation of this die.
   //-----------------------------------------------------------------
   public String toString()
   {
      String result = Integer.toString(faceValue);

      return result;
   }
}

我修复了我的java代码以包含collections.sort

import java.util.*;

public class Yahtzee 
{
    public static void manin(String args[])
    {

        Die die1 = new Die();
        Die die2 = new Die();
        Die die3 = new Die();
        Die die4 = new Die();
        Die die5 = new Die();

        Die placeholder = new Die();

        int timeRolled = 0;


        String myString;

        Scanner scan = new Scanner(System.in);

        System.out.println("Please press 'y' to play and 'n' to quit");

        myString = scan.next();

        if(myString == "y")
        {   
            ArrayList<Integer> yahtzee = new ArrayList<>(5);

            die1.roll();
            die2.roll();
            die3.roll();
            die4.roll();
            die5.roll();

            yahtzee.add(die1.getVal());
            yahtzee.add(die2.getVal());
            yahtzee.add(die3.getVal());
            yahtzee.add(die4.getVal());
            yahtzee.add(die5.getVal());

            Collections.sort(yahtzee);





        }






    }
}

我怎么知道将这些值相互比较?

1 个答案:

答案 0 :(得分:1)

如果您正在处理数字,为什么不使用int[]而不是整个ArrayList?

 int[] yahtzee = new int[5];
 yahtzee[0] = (die1.roll());
 yahtzee[1] = (die2.roll());
 yahtzee[2] = (die3.roll());
 yahtzee[3] = (die4.roll());
 yahtzee[4] = (die5.roll());
 Arrays.sort(yahtzee);

这将按顺序排列您的阵列。第一个元素=最小,最后一个=最大。

您根本不必手动使用任何if语句,代码也更加优化和清晰。

修改

正如评论中所指出的,您应该使用if(myString == "y")

而不是if(myString.equals("y")