【发布时间】:2020-01-29 16:42:29
【问题描述】:
我正在尝试使用 CardController 类创建一副牌。
Card 类(不可见)代表单独的卡片,并带有构造函数public Card(String cardValue, CardType cardType)。
在我的deckIndexTracker 达到 10 之前,我的卡片组已正确填写,此时代码将移动到 switch 语句以填写卡片值
杰克、王后、国王和王牌。
使用 Eclipse 的调试工具后,我发现我的每一个变量在方法超过deckIndexTracker 9 后都消失了。
这里会发生什么?
public class CardController {
public static Card[] makeDeck() {//2 to 10 + J,Q,K,A
Card[] deck = new Card[51];
int deckIndexTracker = 1;
while(deckIndexTracker <= 13) {
if(deckIndexTracker <= 9) {
deck[deckIndexTracker - 1] = new Card(String.valueOf(deckIndexTracker + 1), CardType.HEART);
deckIndexTracker++;
}else {
switch(deckIndexTracker) {
case 10:
deck[deckIndexTracker - 1] = new Card("Jack", CardType.HEART);
break;
case 11:
deck[deckIndexTracker - 1] = new Card("Queen", CardType.HEART);
break;
case 12:
deck[deckIndexTracker - 1] = new Card("King", CardType.HEART);
break;
case 13:
deck[deckIndexTracker - 1] = new Card("Ace", CardType.HEART);
}
}
}
【问题讨论】:
-
你只增加
deckIndexTrackerif is true。为什么不使用int deckIndexTracker = 0并将-1从deck的索引中删除? -
这不应该是无限循环吗?
-
deckIndexTracker如果其值 > 9 则不递增 -
推荐使用
for循环而不是显式增加索引。
标签: java