我必须使用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);
}
}
}
我怎么知道将这些值相互比较?
答案 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")