我认为我已完成前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]);
}
}
}
请使用正确的标识代码。 –
我尝试,但它自己搞砸 –
你可以简短吗? –