Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java和两个嵌套for循环计算扑克中的对数_Java_Loops_Nested_Poker - Fatal编程技术网

如何使用Java和两个嵌套for循环计算扑克中的对数

如何使用Java和两个嵌套for循环计算扑克中的对数,java,loops,nested,poker,Java,Loops,Nested,Poker,我对编程非常陌生,我一直在尝试一个练习。基本上,我需要计算我在5张未排序的卡片串中找到的卡片对的数量。我对它的解释可能是错误的, 例如,其中一个字符串如下所示:“sTh3c9hQ”,其中s是黑桃,T是十,h是红心等等。。。 我不知道为什么我的代码不起作用。。可能是因为我不知道的一个非常合乎逻辑的原因。有人能给我一些建议吗? 谢谢 int count=0; for(int i=0;i我个人认为应该将字符串拆分为一个列表,而不是跟踪字符串本身的位置,这使for循环更容易理解。类似于: public

我对编程非常陌生,我一直在尝试一个练习。基本上,我需要计算我在5张未排序的卡片串中找到的卡片对的数量。我对它的解释可能是错误的, 例如,其中一个字符串如下所示:“sTh3c9hQ”,其中s是黑桃,T是十,h是红心等等。。。 我不知道为什么我的代码不起作用。。可能是因为我不知道的一个非常合乎逻辑的原因。有人能给我一些建议吗? 谢谢

int count=0;

for(int i=0;i我个人认为应该将字符串拆分为一个列表,而不是跟踪字符串本身的位置,这使for循环更容易理解。类似于:

public int getPairs(final String hand) {
    int count = 0;
    List<String> cards = getParts(hand, 2);
    for (int i = 0; i < cards.size() - 1; i++) {
        for (int j = i + 1; j < cards.size(); j++) {
            if (cards.get(i).charAt(1) == cards.get(j).charAt(1)) {
                count++;
            }
        }
    }
    return count;
}

private static List<String> getParts(final String string,
                                     final int partitionSize) {
    List<String> parts = new ArrayList<>();
    int len = string.length();
    for (int i = 0; i < len; i += partitionSize) {
        parts.add(string.substring(i, Math.min(len, i + partitionSize)));
    }
    return parts;
}
public int getPairs(最后一个字符串){
整数计数=0;
列表卡=获取零件(手,2);
对于(int i=0;i
//如果每一对中只能存在一对,那么这应该可以工作
整数计数=0;
布尔PAR=FALSE;

对于(int i=0;i,这里有一个单线解决方案:

return hand.replaceAll("[a-z]|(.)(?!.*\\1)", "").length();
这将用一个空格(即删除它们)替换字符串中以后没有其他副本的所有suits(小写字母)和所有rank char,只留下成对的列组。对结果调用
length()
可以获得对的计数


请参阅正则表达式中匹配所有非对字符的部分。

什么意思不起作用?是否收到错误消息?不是所需输出?不是所需输出也许您可以将所需输出与实际输出相加…好的,所需输出已添加!如果手部包含三元组,您希望发生什么?第
?找到配对后停止迭代循环。啊,我现在看到了
//if only one pair can exist of each, this should work
int count = 0;
boolean par = false;
for(int i = 0; i<hand.length()-4; i+=2){
    par = false;
    for(int j = i+2; j<hand.length()-2 && !par; j+=2){
        if(hand.charAt(i) == hand.charAt(j)  && hand.charAt(i+1) ==  hand.charAt(j+1)) 
        {
            count++;
            par = true;
        }
    }
}
return count;
return hand.replaceAll("[a-z]|(.)(?!.*\\1)", "").length();