我的问题是我似乎无法在类中使用我的
new VueRouter({
routes: [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Bar }
]
})
方法shuffle()
(必须是私有的)。不太确定我是否应该在private
方法中使用它或在CardDeck
构造函数中使用它。我也不太确定我的编码是否正确。任何建议/提示将不胜感激!
drawNextCard()
主:
CardDeck()
我的测试输出是
import java.util.*;
public class CardDeck
{
private String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K", "A" };
private char[] suits = {'s','h','d','c'};
private Card[] cards = new Card[13];
private int currentCard;
CardDeck()
{
Card newCard;
for(int i=0; i<4; i++)
{
for(int j=0; j<13; j++)
{
cards[j] = new Card(this.ranks[j], this.suits[i]);
}
}
}
public void testing() //just for testing
{
System.out.println(this.suits[0]);
}
public Card drawNextCard()
{
return cards[currentCard++];
}
private void shuffle()
{
Card[] tmp = new Card[200];
for (int i = 0; i < cards.length; i++)
{
int index = i + (int)(Math.random() * (cards.length));
tmp[i] = cards[i];
cards[i] = cards[index];
cards[index] = tmp[i];
}
}
}
答案 0 :(得分:0)
int index = i + (int)(Math.random() * (cards.length));
您获得IOB异常的原因是由于上述声明。您的卡的索引不能超过12,但上述声明有可能达到12以上。因此,以下是替换上述声明的可能选项:
int index = (int)(Math.random() * (cards.length));
限制条件是 - 卡片可以自行更换,卡片可以换回原来的位置。另一种选择是使用Collections.shuffle():
private void shuffle()
{
List<Card> cardList = Arrays.asList(cards);
Collections.shuffle(cardList);
cards = cardList.toArray(cards);
}
对于你在评论部分中的问题,关于如何调用shuffle,这取决于你想要调用它的位置。如果它定义在同一个类中,则只需将其命名为shuffle();
。如果它在主要课程或其他课程中,您可以在课程实例之后调用它,例如CardDeck cardDeck = new CardDeck();
cardDeck.shuffle();
。