我認爲我已完成前3個步驟,所以請嘗試幫助我解決最後一個問題,我似乎遇到了多維陣列的問題,我必須打印派對名片和卡片: 步驟來做的程序:用於打印卡片的Java多維陣列
1)使用Math.random()和其餘運算符生成52到52不同的數字從0到51.這些數字將代表一副牌,我們稱之爲deckOfCard。 (現在你有一個大小爲52的一維數組)。對於這一步,你應該寫一個名爲generateCard的方法,它不返回任何內容,而是接受一個參數,這個參數是表示卡片組的數組變量(通過引用傳遞數組)。
2)爲了確保程序正常工作,在繼續下一步之前,應該在生成陣列時打印數字。編寫一個名爲printCard的方法,它不返回任何內容,但接受3個參數,如下所示:(1)數組,(2)每行輸出的數量,以及(3)每個輸出的寬度。您將調用此方法以每行13個數字和每個數字5個空格的格式打印數組的內容。
3)使用代表4手牌的4x13的二維數組。讓我們稱它爲手。寫一個叫做deal的方法,它接受兩個參數,一個是deckOfCard,另一個是手。此方法將該卡分發給四方(假設分發順序爲東,北,西和南)。
要確保您的第4步工作正常,您應該先撥打打印卡,然後再轉到下一步。
4)假設Spade的取值範圍是0到12,Heart取值從13到25,Diamond取值從26到38,Club取值從39到51.您將編寫一個名爲printHands的方法,每一方的手都類似於以下內容。 NORTH S:AQJ 10 9 2 H:Ĵ8 2 d:K C:AJ 9 同樣爲其它方向 爲此,一個簡單的方法是建立的4x4x13 3維陣列,讓我們稱它爲四層。第一個維度表示一副牌,每個第一維表示每個玩家擁有的牌。最初所有值都是0,表示沒有任何玩家擁有。第二和第三維將代表特定的卡片。如果某張卡片由某一方持有,則特定插槽的值將從「0」更改爲「1」。最終,將有總共52「1'和每一方(或每個所述第一維度的)將包含13個非重疊的」 1'
赫雷什我現在所擁有的代碼:
public class DeckOfCard {
public static void main(String[] args) {
int[] deckOfCard = new int[52];
int[][] hands = new int[4][13];
int[][][] fourDecks = new int[4][4][13];
generateCard(deckOfCard);
printCard(deckOfCard, 13, 5);
deal(deckOfCard, hands);
printHands(deckOfCard, 4, 13);
}
public static void generateCard(int[] deckOfCard) {
//Initialize the cards
for (int i = 0; i < deckOfCard.length; i++)
deckOfCard[i] = i;
//Shuffle the Cards
for (int i = 0; i < deckOfCard.length; i++) {
//Generate an index randomly
int index = (int)(Math.random() * deckOfCard.length);
int temp = deckOfCard[i];
deckOfCard[i] = deckOfCard[index];
deckOfCard[index] = temp;
}
}
public static void printCard(int [] deckOfCard, int column, int width) {
for (int i = 1; i <= deckOfCard.length; i++) {
System.out.printf("%"+ width + "d" , deckOfCard[i-1]);
if (i % column == 0) System.out.println();
}
}
public static void deal(int[] deckOfCard, int[][] hands) {
for(int i = 0; i < deckOfCard.length; i++) {
for(int row = 0; row <= 3; row++) {
for(int column = 0; column < 13; column++) {
hands[row][column] = deckOfCard[i];
i++;
System.out.println(hands[row][column]);
}
}
}
}
public static void printHands(int[] deckOfCard, int suit, int rank) {
String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"};
String[] cases = {"EAST", "NORTH", "WEST", "SOUTH"};
String[] ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
for (int i = 0; i < deckOfCard.length; i++) {
String suit1 = suits[deckOfCard[i]/13];
String rank1 = ranks[deckOfCard[i] % 13];
System.out.println(cases + " : " + deckOfCard[i]);
}
}
}
請使用正確的標識代碼。 –
我嘗試,但它自己搞砸 –
你可以簡短嗎? –