gpt4 book ai didi

java - 使用 Java 如何确定输入到数组中的 5 个数字是否连续?

转载 作者:行者123 更新时间:2023-12-01 18:43:38 24 4
gpt4 key购买 nike

我正在尝试编写一个非常简单的扑克游戏。我只使用非人头牌,2-9,没有套件或类似的东西。我正在尝试找出如何编写一个方法来确定五张牌是否为葫芦,即一对和 3 个同类。我让用户输入 5 个代表卡值的整数并将它们存储在一个数组中。我尝试写这样的东西:

public static boolean containsFullHouse(int[] hand)
{
for (int i = 0; i < hand.length; i++){
int count = 0;

for (int j = 0; j < hand.length; j++){
if (hand[i] == hand[j]){
count++;}

if (count == 3){
return true;}
}
}
for(int i = 0; i < hand.length; i++){
for(int j = i + 1; j < hand.length; j++){
if(hand[i] == hand[j]){
return true;}
}
}
}
return false;
}

最佳答案

您需要计算每个数字的出现次数,并创建所谓的基数图。那么基数必须是 (2,3) 或 (3,2)。如果不使用 guava 或 Apache Commons Collections(其中包含执行此操作的便捷方法),可以通过以下方式完成:

public static boolean isFullHouse(final int[] input) {
if (input.length != 5) { throw new IllegalArgumentException("need 5 integers"); }
Map<Integer, Integer> cardinalityMap = new HashMap<>();
for (int i : input) {
if (cardinalityMap.containsKey(i)) {
cardinalityMap.put(i, cardinalityMap.get(i) + 1);
}
else {
cardinalityMap.put(i, 1);
}
}

if (cardinalityMap.size() != 2) { return false; }
Collection<Integer> occurences = cardinalityMap.values();
int first = occurences.iterator().next();
return first == 2 || first == 3;
}

关于java - 使用 Java 如何确定输入到数组中的 5 个数字是否连续?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18868970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com