我正在研究一种试图显示手牌符号的方法,所以不是4C而是4(俱乐部),其中(俱乐部)是俱乐部符号的unicode。
对于switch语句,HEART,CLUB等在我的程序顶部被声明为字符串,用于正确的unicode。
我的问题是,当我运行该方法时,包含“Card card = cards [i];”的行正在产生一个空指针异常,我不明白为什么。请帮助:)
我有“私卡[]卡;”在顶部。当我尝试做= hand.getCards时会产生错误,因为ArrayList无法转换为Card []
现在是我的方法。
private String displaySuits() {
for (int i = 0; i < hand.getCards().size(); i++) {
Card card = cards[i];
suits.append(" ");
suits.append(card.getRank());
switch (card.getSuit()) {
case SPADE:
suits.append(SPADE);
break;
case DIAMOND:
suits.append(DIAMOND);
break;
case CLUB:
suits.append(CLUB);
break;
case HEART:
suits.append(HEART);
break;
}
}
return suits.toString();
}
答案 0 :(得分:4)
您忘记在方法displaySuits中定义Card 卡的ArrayList。
private String displaySuits() {
ArrayList<Card> cards = hand.getCards();
StringBuilder suits = new StringBuilder();
for (int i = 0; i < cards.size(); i++) {
Card card = cards[i];
suits.append(" ");
suits.append(card.getRank());
switch (card.getSuit()) {
case SPADE:
suits.append((char)'\u2660');
break;
case DIAMOND:
suits.append((char)'\u2666');
break;
case CLUB:
suits.append((char)'\u2663');
break;
case HEART:
suits.append((char)'\u2764');
break;
}
}
return suits.toString();
}
答案 1 :(得分:1)
当您使用ArrayList
时,请勿将cards
声明为数组Cards[]
,而应将其声明为
private List<Card> cards;
在类构造函数中初始化它(良好的编程习惯)
cards = hand.getCards();
您必须访问
等元素cards.get(i);
注意:
ArrayList
与数组不同。不要忘记声明并初始化suits
,例如:
StringBuilder suits = new StringBuilder();