我正在制作一个滚动三个骰子的Java程序,然后确定它是三对,直接还是成对。我怎样才能确定它是否是直的?
static int d1, d2, d3;
static int wins, loses, ties, rounds;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
char answer;
welcome();
while (answer != 'n') {
DieGame.d1 = rollDie(1, 7);
DieGame.d2 = rollDie(1, 7);
DieGame.d3 = rollDie(1, 7);
printDice(d1, d2, d3);
if (isTriple(d1, d2, d2)) {
wins++;
}
else if (isStraight(d1, d2, d3)) {
wins++;
}
}
}
public static boolean isStraight(int d1, int d2, int d3) {
}
这里只是一些代码。显然还有其他方法,但我在努力确定一个直线。我们还没有在阵列上,所以我无法使用它。
答案 0 :(得分:2)
这样的事情应该有效
public boolean isStraight(int d1, int d2, int d3) {
int min = getMin(d1, d2, d3);
int mid = getMid(d1, d2, d3);
int max = getMax(d1, d2, d3);
if((max - mid) == 1 && (mid - min) == 1) {
return true;
} else {
return false;
}
}
getMin,getMid和getMax返回最小值,中间值和最大值。由于你还没有使用数组,我假设你不能使用Math.min()等等。所以,这些看起来如下。
public int getMin(int d1, int d2, int d3) {
int min = d1;
if (d2 < min) {
min = d2;
}
if (d3 < min) {
min = d3;
}
return min;
}
等等......
答案 1 :(得分:0)
public boolean isStraight(int d1, int d2, int d3) {
int min = Math.min(d1,Math.min(d2,d3))
int max = Math.max(d1,Math.max(d2,d3))
if((max-min)==2)
return true;
else
return false;
}
答案 2 :(得分:-1)
对于这三个结果(三对,直,或对),一个非常好的提示可以使用 Set 集合(因为它不接受重复的值),你可以将所有6个数字放入一个空集然后按照集合的大小来评估结果,我的意思是在最后和将所有6个值放入集合之后:
如果集size
为3
,则结果为:three pair
如果集size
为6
,则结果为:straight
如果集size
为5
,则结果为:pair
:
一个简单的样本:
Integer[] values = {1, 4, 6, 1, 6, 4};
Set<Integer> resultValues = new HashSet<Integer>();
for (Integer i : values) {
resultValues.add(i);
}
switch (resultValues.size()) {
case 3:
System.out.println("Three Pairs");
break;
case 6:
System.out.println("Straight");
break;
case 5:
System.out.println("One Pair");
break;
default:
System.out.println("Others");
}
输出:
Three Pairs