【发布时间】:2020-12-02 20:10:27
【问题描述】:
我有一个基于生成一副牌然后洗牌的代码。这是我目前的代码。
import java.lang.Math;
import java.util.Arrays;
public class Program_9 {
public static void main(String[] args) {
int[] deck = new int[36];
int n = 1;
initDeck(deck);
System.out.println("\nDeck");
System.out.println("#############\n");
displayDeck(deck);
System.out.println("\nShuffled Deck");
System.out.println("#############\n");
shuffleDeck(deck, 10);
}
public static int cardValue(int card) {
//Return the integers value 1 - 9 of card
int cardValue = card % 9 + 1;
return cardValue;
}
public static String cardSuit(int card) {
//return the suit club, spade, heart, diamond of card
String cardSuit = "";
int value = card / 9;
if (value == 0) {
cardSuit = "Club";
}
if (value == 1) {
cardSuit = "Spade";
}
if (value == 2) {
cardSuit = "Heart";
}
if (value == 3) {
cardSuit = "Diamond";
}
return cardSuit;
}
public static void displayCard(int card) {
//prints card value and suit in some reasonable report
System.out.print(cardValue(card) + " of " + cardSuit(card));
}
public static void initDeck(int[] deck) {
//assign the elements of deck, such that each elements value is the same as it index
deck[0] = 1;
deck[1] = 2;
deck[2] = 3;
deck[3] = 4;
deck[4] = 5;
deck[5] = 6;
deck[6] = 7;
deck[7] = 8;
deck[8] = 9;
deck[9] = 10;
deck[10] = 11;
deck[11] = 12;
deck[12] = 13;
deck[13] = 14;
deck[14] = 15;
deck[15] = 16;
deck[16] = 17;
deck[17] = 18;
deck[18] = 19;
deck[19] = 20;
deck[20] = 21;
deck[21] = 22;
deck[22] = 23;
deck[23] = 24;
deck[24] = 25;
deck[25] = 26;
deck[26] = 27;
deck[27] = 28;
deck[28] = 29;
deck[29] = 30;
deck[30] = 31;
deck[31] = 32;
deck[32] = 33;
deck[33] = 34;
deck[34] = 35;
deck[35] = 36;
}
public static void shuffleDeck(int[] deck, int n) {
//the following performed exactly n times:
// 1. generate two random numbers j and k - each in range of [0 , 35]
// 2. swap the values of the deck array at indices j and k
for (int i = 0; i < deck.length; i++) {
int k = (int)((Math.random() * 35) + 0);
int j = (int)((Math.random() * 35) + 0);
}
}
public static void displayDeck(int[] deck) {
//prints the cards in deck in some reasonable report format
for (int i = 0; i < deck.length; ++i) {
int card = i;
displayCard(card);
System.out.println();
}
}
}
我在理解如何编写 shuffleDeck() 方法时遇到问题。这是我第一次学习 Java,所以我还很新。我不明白的是 shuffleDeck() 方法中的第二个推荐。 请注意,这是一项家庭作业,因此我希望提供提示而不是答案
【问题讨论】:
-
你是如何创建套牌的?
-
将您的卡片添加到 ArrayList。然后使用 Collections.shuffle(...) 方法洗牌。
-
@iota 还有 2 种其他方法可用于确定套件和卡片的价值。