【发布时间】:2015-02-01 06:16:03
【问题描述】:
我正在制作一副带有 3 维数组的纸牌。但是当我调用随机卡片方法时,它说卡片数组有一个空值,即使我应该用双循环填充它?
我查看了卡片上的其他帖子,但它们通常是 2D 或两个不同的数组,而不是 3D。感谢你们的任何时间。如果我的编码/想法/帖子有问题,请告诉我,我对 Java 和堆栈还很陌生。
import java.util.Random;
import java.util.Arrays;
public class Deck {
String Hearts, Diamonds, Spades, Clubs;
private String Suit;
private int Deck [][][];
private int card [][];
public void FreshDeck()
{
Deck = new int [][][]
{{{1,1},{2,1},{3,1},{4,1},{5,1},{6,1},{7,1},{8,1},{9,1},{10,1},{11,1},{12,1}}, //Hearts
{{1,2},{2,2},{3,2},{4,2},{5,2},{6,2},{7,2},{8,2},{9,2},{10,2},{11,2},{12,2}}, //Diamonds
{{1,3},{2,3},{3,3},{4,3},{5,3},{6,3},{7,3},{8,3},{9,3},{10,3},{11,3},{12,3}}, //Spades
{{1,4},{2,4},{3,4},{4,4},{5,4},{6,4},{7,4},{8,4},{9,4},{10,4},{11,4},{12,4}} //Clubs
};
}
private void setValue(int index, int value)
{
card[index][0] = value;
}
private void setSuit(int index, int suit)
{
card[index][1] = suit;
}
public int Value(int index)
{
return card[index][0];
}
public int Suit(int index)
{
return card[index][1];
}
public void setRandomCard()
{
Random randomCard = new Random();
int randomInt = randomCard.nextInt(51);
for (int i=0; i<12; i++)
{
for (int j=0; j<4; ++j)
{
card[i][j] = Deck[randomInt][i][j];
}
}
}
}
【问题讨论】:
-
为什么 2D 不适合你?
-
请尊重 Java 命名约定,对于您和必须阅读您的代码的人。变量或方法的开头没有大写,仅适用于类和接口。
-
我看不出有任何理由拥有 3D
Deck或 2Dcard。如果出于某些关系目的,请考虑编写另一个类。