0

我正在尝试创建一个套牌并为面部卡片创建特殊规则,但是即使我觉得我一切都正确,这个 while 循环似乎什么也没做。请帮忙。

//creates the deck
deck = [];
Ace = 1;
Jack = 10;
Queen = 10;
King = 10;
for(i = 1; i <= 52; i++) {
    deck[i] = i;
}
while (i < deck.length) {
    if(deck[i] == 1 || deck[i] == 14 || deck[i] == 27 || deck[i] == 40) {
        deck[i] = Ace;
    }
    i++;
}
alert(deck);
4

2 回答 2

4

在你的for循环之后,i将会是deck.length,所以你的while循环永远不会进入。它应该是另一个for循环。

另外,var请用 声明您的变量。隐式全局变量很糟糕!

此外,您还可以检查除以 13 时的余数以获得 A。您可以在同一个循环中执行这两个步骤。

var deck = [];
var Ace = 1;
var Jack = 10;
var Queen = 10;
var King = 10;

for(var i = 1; i <= 52; i++) {
    if(i % 13 === 1) {
        deck[i] = Ace;
    } else {
        deck[i] = i;
    }
}

alert(deck);
于 2013-06-04T02:26:02.890 回答
1

您的 while 循环没有执行。在 for 循环之后 i 的值将是 53,因此您将立即进入警报。

此外,javascript 数组从 0 开始。您也应该组合循环。当您可以在第一个循环中执行时,没有理由再次循环跳过项目。

于 2013-06-04T02:28:07.463 回答