Java 无法进行迭代以获得同类的四个

Java 无法进行迭代以获得同类的四个,java,for-loop,iteration,Java,For Loop,Iteration,我做这件事已经很久了。我找不到答案。到目前为止,我的程序打印了一副牌,包括套装和等级,但我需要洗牌,设置计数器,并在洗牌后的牌中迭代以获得四张同类牌 示例输出: 黑桃王牌、钻石王牌、红桃王牌、梅花王牌 迭代次数(计数器):32562 公共类甲板{ 公共静态void main(字符串[]args){ 字符串[]={ “梅花”、“钻石”、“红心”、“黑桃” }; 字符串[]秩={ “A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”, “杰克”、“女王”、“国王” };

我做这件事已经很久了。我找不到答案。到目前为止,我的程序打印了一副牌,包括套装和等级,但我需要洗牌,设置计数器,并在洗牌后的牌中迭代以获得四张同类牌

示例输出:

黑桃王牌、钻石王牌、红桃王牌、梅花王牌

迭代次数(计数器):32562

公共类甲板{
公共静态void main(字符串[]args){
字符串[]={
“梅花”、“钻石”、“红心”、“黑桃”
};
字符串[]秩={
“A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”,
“杰克”、“女王”、“国王”
};
//初始化甲板
int n=52;
字符串[]组=新字符串[n];
for(int i=0;i
我包括一个计数器和洗牌,直到前四张牌是同一种类的四张:

public class Deck {
public static void main(String[] args) {
    Card[] deck = initDeck();

    int counter = 0;
    do {
        shuffle(deck);
        counter++;
    } while (!isFourOfAKind(deck));

    System.out.print(deck[0] + ", ");
    System.out.print(deck[1] + ", ");
    System.out.print(deck[2] + ", ");
    System.out.println(deck[3]);
    System.out.println();
    System.out.println("Number of iterations (counter): " + counter);

    // print shuffled deck
    System.out.println("All of the deck");
    for (int i = 0; i < deck.length; i++) {
        System.out.println(deck[i]);
    }
}

private static Card[] initDeck() {
    String[] SUITS = { "Clubs", "Diamonds", "Hearts", "Spades" };
    String[] RANKS = { "Ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King" };

    int n = 52;
    Card[] deck = new Card[n];
    for (int i = 0; i < RANKS.length; i++) {
        for (int j = 0; j < SUITS.length; j++) {
            deck[SUITS.length * i + j] = new Card(SUITS[j], RANKS[i]);
        }
    }
    return deck;
}

private static boolean isFourOfAKind(Card[] deck) {
    return deck[0].rank.equals(deck[1].rank) && deck[1].rank.equals(deck[2].rank)
            && deck[2].rank.equals(deck[3].rank);
}

private static void shuffle(Card[] deck) {
    for (int i = 0; i < deck.length; i++) {
        int r = i + (int) (Math.random() * (deck.length - i));
        Card temp = deck[r];
        deck[r] = deck[i];
        deck[i] = temp;
    }
}

public static class Card {
    public final String suit;
    public final String rank;

    public Card(String suit, String rank) {
        super();
        this.suit = suit;
        this.rank = rank;
    }

    @Override
    public String toString() {
        return rank + " of " + suit;
    }
}

}
公共类甲板{
公共静态void main(字符串[]args){
卡片[]组=初始组();
int计数器=0;
做{
洗牌(牌组);
计数器++;
}而(!是四类(甲板));
系统输出打印(组[0]+“,”);
系统输出打印(组[1]+“,”);
系统输出打印(甲板[2]+“,”);
系统输出打印LN(甲板[3]);
System.out.println();
System.out.println(“迭代次数(计数器):”+计数器);
//印花混洗套牌
System.out.println(“所有甲板”);
对于(int i=0;i
请在洗牌后添加以下代码

int clubCounter=0;
        int diamondsCounter=0;
        int heartsCounter=0;
        int spadesCounter=0;
        for (int i = 0; i < n; i++) {
            if(deck[i].endsWith("Clubs")){
                clubCounter+=1;
                if(clubCounter == 4){
                    System.out.println("Number of iteration to get 4 clubs: "+i);
                }
            }else if(deck[i].endsWith("Diamonds")){
                diamondsCounter+=1;
                if(diamondsCounter == 4){
                    System.out.println("Number of iteration to get 4 Diamonds: "+i);
                }
            }else if(deck[i].endsWith("Hearts")){
                heartsCounter+=1;
                if(heartsCounter == 4){
                    System.out.println("Number of iteration to get 4 Hearts: "+i);
                }
            }else{
                spadesCounter+=1;
                if(spadesCounter == 4){
                    System.out.println("Number of iteration to get 4 Spades: "+i);
                }
            }
           if(clubCounter == 4 && diamondsCounter == 4 && heartsCounter == 4 && spadesCounter == 4){
               break;
           }
        }   
int clubCounter=0;
内径中心=0;
int心脏中心=0;
int spadesCounter=0;
对于(int i=0;i
设置计数器是什么意思?比如,数一数,在前四个平局变成一种四局之前,你必须洗牌多少次?(在这种情况下,概率是(52/52)*(3/51)*(2/50)*(1/49),洗牌次数的期望值也可以从中计算出来。)哦,是的,对不起,我刚刚编辑了我的问题。但是,是的,我们需要计算一下,迭代了多少次,得到了四个,基本上就是得到了四个,并在屏幕上显示出来。这个问题经过编辑,包括了一个例子,你把什么定义为四类?每次洗牌时,你会在前五张牌中出一手牌吗?在整个牌组中连续四张相同类型的牌?还有别的吗?四张牌就像黑桃牌、钻石牌、红桃牌、梅花牌
int clubCounter=0;
        int diamondsCounter=0;
        int heartsCounter=0;
        int spadesCounter=0;
        for (int i = 0; i < n; i++) {
            if(deck[i].endsWith("Clubs")){
                clubCounter+=1;
                if(clubCounter == 4){
                    System.out.println("Number of iteration to get 4 clubs: "+i);
                }
            }else if(deck[i].endsWith("Diamonds")){
                diamondsCounter+=1;
                if(diamondsCounter == 4){
                    System.out.println("Number of iteration to get 4 Diamonds: "+i);
                }
            }else if(deck[i].endsWith("Hearts")){
                heartsCounter+=1;
                if(heartsCounter == 4){
                    System.out.println("Number of iteration to get 4 Hearts: "+i);
                }
            }else{
                spadesCounter+=1;
                if(spadesCounter == 4){
                    System.out.println("Number of iteration to get 4 Spades: "+i);
                }
            }
           if(clubCounter == 4 && diamondsCounter == 4 && heartsCounter == 4 && spadesCounter == 4){
               break;
           }
        }