Java 一副牌有问题吗
我对这部分代码有问题。调用该方法时,我不断收到空指针异常。我不确定这有什么问题Java 一副牌有问题吗,java,arrays,loops,methods,compiler-errors,Java,Arrays,Loops,Methods,Compiler Errors,我对这部分代码有问题。调用该方法时,我不断收到空指针异常。我不确定这有什么问题 class Deck{ public Card[] myCards = new Card[52]; void refreshDeck(){ int cardValue = 1; char cardSuit = 'c'; for (int i = 0; i < 52; i++){ myCards[i].setValue(cardValue);
class Deck{
public Card[] myCards = new Card[52];
void refreshDeck(){
int cardValue = 1;
char cardSuit = 'c';
for (int i = 0; i < 52; i++){
myCards[i].setValue(cardValue);
myCards[i].setSuit(cardSuit);
if (cardValue == 13){
cardValue = 0;
switch(cardSuit){
case 'c':
cardSuit = 's';
break;
case 's':
cardSuit = 'd';
break;
case 'd':
cardSuit = 'h';
break;
}
}
cardValue++;
}
}
类甲板{
公共卡[]myCards=新卡[52];
空甲板(){
int cardValue=1;
char cardSuit='c';
对于(int i=0;i<52;i++){
myCards[i].setValue(cardValue);
myCards[i].setSuit(cardSuit);
如果(cardValue==13){
cardValue=0;
开关(卡套){
案例“c”:
cardSuit='s';
打破
案例s:
cardSuit='d';
打破
案例“d”:
cardSuit='h';
打破
}
}
cardValue++;
}
}
<>我真的找不到错误。这是在C++上工作的。 你必须初始化数组中的每个卡。试试看:
for (int i = 0; i < 52; i++){
myCards[i] = new Card();//a constructor
myCards[i].setValue(cardValue);
myCards[i].setSuit(cardSuit);
//...
for(int i=0;i<52;i++){
myCards[i]=新卡();//构造函数
myCards[i].setValue(cardValue);
myCards[i].setSuit(cardSuit);
//...
您尚未初始化阵列中的每张卡,请添加
myCards[i] = new Card();
到for循环的开始您已经构建了一个包含52个对
卡
对象引用的数组,但这些对象尚未创建。该数组是一个包含52个空引用的数组。您需要构建每个引用:
for (int i = 0; i < 52; i++) {
myCards[i] = new Card();
...
是的,就像下面的答案一样,您已经初始化了卡片数组,但是您没有为数组中的每个位置创建新的卡片对象。谢谢。我知道我必须初始化一些东西,但不知道是什么。不客气。如果您对我的答案满意,请将您的问题标记为已回答:)
myCards[i] = new Card(cardValue,cardSuit);