How to count pairs in Poker using Java and two nested for loops

how to check poker hand java
c++ poker hand evaluator
simple java code for poker game
poker hand evaluator algorithm
python check poker hands
python poker hand evaluator
prolog poker
poker-java github

I'm very new to programming and I have been trying out an exercise. Basically I need to count the number of pairs of cards that I find in an unsorted String of 5 cards. The way I interpreted it was probably wrong, For example, one of the strings looks like this: 'sTh3c9hQ' with s being spades, T being ten, h being hearts ect... I'm not sure why my code isn't working.. Probably for a very logical reasons that I am blind to. Could someone offer me some suggestions? Thanks.

        int count = 0;
        for(int i = 0; i<hand.length()-2; i+=2){
            for(int j = 1; j<hand.length()-3; j+=2){
                if(hand.charAt(i) == hand.charAt(i+2) && hand.charAt(j) == 
                    hand.charAt(j+3)) {
        return count;

The desired output in the case of 'sTh3c9hQ' would be 0, as there are no pairs. The desired output in the case of 'sTh3c9sT' would be 1, as there is one pair. ect. If there were two pairs, count would be 2. If there were three, count would be 3, ect

I personally think you should split the string into a list instead of keeping track of where you are in the string itself, it makes the for loop a lot easier to understand. something like that would look like:

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)) {
    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;

OnePair Pokerhand method java, In your 2 nested for loops, you are counting the cases where i == j , so that each card equals itself. Start j from one past wherever i is: for(int j = i + 1; j < 5; j++). There is a pair of kings, so we record 2 as sameCards and 13 as groupRank. But we keep going through the other ranks, and if there are 3 fives, then we overwrite sameCards with 3 since the number of cards of that rank is more than the current value of sameCards. Similar situation: we have two pairs, it records the first pair, but not the other one.

//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)) 
            par = true;
return count;

Determining Poker Hands, I think you can find the majority of poker hands by simply making a couple of tables of can make a similar array of the count of cards of each suit, and use it to detect flushes. A hand of two pair would be stored with the higher of the two pairs first, then the compare each card with each other in a nested loop like this one: In this video I show how you use nested loops and counters. Skip navigation Sign in. VBA loops nested loops basic - Duration: Using Count in Excel VBA

Here’s a one line solution:

return hand.replaceAll("[a-z]|(.)(?!.*\\1)", "").length();

This replaces all suits (lowercase letters) and all rank char that don’t have another copy later in the string with a blank (ie deletes them), leaving just the ranks that are paired. Calling length() on the result gives you the count of pairs.

See live demo of the regex matching all non-pair chars.

java, You'd have to weight in on whether this would be two distinct pairs or not. time here (compare this to the nested loops approach which will cost O(n2)). This tells us how many pairs there are without actually counting them. Card Games · Bricks · Homebrewing · Martial Arts · The Great Outdoors · Poker. The desired output in the case of 'sTh3c9hQ' would be 0, as there are no pairs. The desired output in the case of 'sTh3c9sT' would be 1, as there is one pair. ect. If there were two pairs, count would be 2. If there were three, count would be 3, ect

Make a poker hand evalutator in Java, package javapoker; public class Card{ private short rank, suit; private static But computers work much faster with 4 byte int s than 2 byte short s, We've written the code to determine a pair, 2 pairs, three of a kind, four of a We hitch a ride on the loop that iterates through the cards recording their ranks:. I am looking to write a script that will determine what the minimum value in a matrix is, and where it is located (it occurs more than once). I have written a code that will find a single minimum, but I'm struggling to adapt it for more than one minimum.

Where can I watch/ read up more on Nested loops? Where it doesn't , r/javahelp: General subreddit for helping with **Java** code. Use two nested loops to count how many pairs of cards have the same rank. This number of pairs tells you right away the shape of the poker hand. " And to be real honest, this is  We will cover variables, loops, if else branching, arrays, strings, objects, classes, object oriented programming, conditional statements, and more. Here we create an array and use a loop to

[PDF] Introduction to Programming Using Java, 12.5.4 A Networked Poker Game . runs in a loop in which it repeatedly reads one instruction from the program, Java is actually pretty liberal about what counts as a letter or a digit. name must be followed by an empty pair of parentheses. if..else statement makes it clear that exactly one of the two nested statements is  In this manner, the two nested loops make row and column variables assume all the possible combinations of two values from 1 to 10. If you still have any uncertainties, try stepping through the program with a debugger. To solve this task, we had to use two nested for loops, which are together called a double loop. Generally speaking, whenever

  • What do you mean isn't working? Do you get an error message? Not the desired output?
  • Not the desired output
  • Maybe you can add the desired output vs the actual output ...
  • Okay, the desired output has been added!
  • What do you want to happen if the hand contains a triple?
  • What is the purpose of par?
  • Stop the iteration loop when the pair is found.
  • Ah I see it now