尝试使用这些算法来评估一个填充有5个随机选择的整数的数组,范围从1-6。不幸的是,它只会返回高卡和一对选项。当我掷出两对,三种等等时,如何获得更高的分数?
private static int[] getCounts(int[] dice) {
int[] counts = new int[6];
String resValue = "";
for (int i = 0; i < dice.length; i++) {
if (dice[i] == 1) {
counts[0]++;
} else if (dice[i] == 2) {
counts[1]++;
} else if (dice[i] == 3) {
counts[2]++;
} else if (dice[i] == 4) {
counts[3]++;
} else if (dice[i] == 5) {
counts[4]++;
} else if (dice[i] == 6) {
counts[5]++;
}
}
return counts;
}
private static String getResult(int[] dice) {
int[] counts = getCounts(dice);
String resValue = " ";
for (int i = 0; i < counts.length; i++) {
if (counts[i] == 5) {
resValue = "Five of a kind ";
} else if (counts[i] == 4) {
resValue = "Four of a kind ";
} else if (counts[i] == 3) {
for (int j = 0; j < counts.length; j++) {
if (counts[j] == 2) {
resValue = "Full House ";
}
}
resValue = "Three of a Kind ";
} else if (counts[i] == 2) {
for (int j = 0; j < counts.length; j++) {
if (counts[j] == 2) {
resValue = "Two Pairs ";
}
}
resValue = "One Pair ";
} else {
resValue = "Highest Card ";
}
}
return resValue;
}
答案 0 :(得分:0)
你的其他方法必须广泛。即使我们之前发现更高的resValue,最后的其他执行也会执行。添加检查,查看新的resValue是否更高,或者在每个子句的末尾添加break。
编辑:在这里,它对我有用:private static int[] getCounts(int[] dice) {
int[] counts = new int[6];
String resValue = "";
for (int i = 0; i < dice.length; i++) {
if (dice[i] == 1) {
counts[0]++;
} else if (dice[i] == 2) {
counts[1]++;
} else if (dice[i] == 3) {
counts[2]++;
} else if (dice[i] == 4) {
counts[3]++;
} else if (dice[i] == 5) {
counts[4]++;
} else if (dice[i] == 6) {
counts[5]++;
}
}
return counts;
}
private static String getResult(int[] dice) {
int[] counts = getCounts(dice);
String resValue = " ";
for (int i = 0; i < counts.length; i++) {
if (counts[i] == 5) {
resValue = "Five of a kind ";
break;
} else if (counts[i] == 4) {
resValue = "Four of a kind "; break;
} else if (counts[i] == 3) {
resValue = "Three of a Kind ";
for (int j = 0; j < counts.length; j++) {
if (counts[j]==2) {
resValue = "Full House "; break;
}
}
break;
} else if (counts[i] == 2) {
resValue = "One Pair ";
for (int j = 0; j < counts.length; j++) {
if (counts[j] == 2) {
resValue = "Two Pairs "; break;
}
}
break;
} else {
resValue = "Highest Card ";
}
}
return resValue;
}