如何在 Java 中确定三个骰子的顺子?
How can I determine a straight of three dice in Java?
我正在制作一个 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) {
}
这里只是部分代码。显然还有其他方法,但我正在努力确定一条直线。我们还没有在阵列上,所以我不能使用它。
像这样的东西应该可以工作
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 return 最小值、中间值和最大值。由于您还没有接触过数组,我假设您不能使用 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;
}
等等...
对于这三个结果(三对、顺子或对)一个很好的提示可以使用 Set 集合(如它不接受重复的值),您可以将所有 6 个数字放入一个空集中,然后根据集的大小评估结果,我的意思是在最终和将所有 6 个值放入集中之后:
如果set的size
是3
那么结果就是:three pair
如果set的size
是6
那么结果就是:straight
如果set的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
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;
}
我正在制作一个 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) {
}
这里只是部分代码。显然还有其他方法,但我正在努力确定一条直线。我们还没有在阵列上,所以我不能使用它。
像这样的东西应该可以工作
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 return 最小值、中间值和最大值。由于您还没有接触过数组,我假设您不能使用 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;
}
等等...
对于这三个结果(三对、顺子或对)一个很好的提示可以使用 Set 集合(如它不接受重复的值),您可以将所有 6 个数字放入一个空集中,然后根据集的大小评估结果,我的意思是在最终和将所有 6 个值放入集中之后:
如果set的
size
是3
那么结果就是:three pair
如果set的
size
是6
那么结果就是:straight
如果set的
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
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;
}