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