我需要在调用另一个方法之前调用void方法。
我有这个方法
public void shuffle() {
various = new Random();
currentCard = 0;
currentTotal1 = 0;
currentTotal2 = 0;
for (int first = 0; first < deckOfCards.length; first++) {
int second = various.nextInt(number_cards);
Card temp = deckOfCards[first];
deckOfCards[first] = deckOfCards[second];
deckOfCards[second] = temp;
}
}
在另一堂课中我有:
public class GameRules {
final deck myDeckOfCards = new deck();
myDeckOfCards.shuffle(); //error here
// first
public ImageIcon GameRules1() {
return myDeckOfCards.giveCardPlayer1().getImage();
}
基本问题是我需要在显示牌之前在牌组中进行随机播放。没有随机方法,卡的顺序是顺序的
有什么想法吗?如果我把方法放在public ImageIcon GameRules1()
里面并没有给出错误,但是我需要在比赛前洗牌所有牌,而不是每次给卡牌方法。
感谢
答案 0 :(得分:8)
您应该将该调用放在类的构造函数中:
public GameRules() {
myDeckOfCards.shuffle();
}
构造函数是您为对象执行初始化任务的地方。
此外,你真的不应该有一个名为GameRules()
的方法返回ImageIcon
。您应该重命名该方法getImage
或类似的东西。然后,当您使用consturctor创建GameRules
并在其上调用getImage
时,将对该套牌进行洗牌。
示例:
GameRules gr = new GameRules(); // deck gets shuffled in constructor call
JLabel test2 = new JLabel(gr.getImage());
查看Java教程,了解好tutorial on writing constructors for your classes.
答案 1 :(得分:5)
根据建议使用构造函数,或者,如果在某些时候您有多个构造函数,您可能希望将它们共有的代码移动到初始化程序:
public class GameRules {
final deck myDeckOfCards = new deck();
// instance initalizer
{
myDeckOfCards.shuffle(); // no more error
}
但是,正如评论中指出的那样,使用构造函数更好,必要时链接构造函数。事实证明,实例初始化器最适合在匿名类中使用。
答案 2 :(得分:2)
为什么不直接在shuffle
构造函数中调用deck
方法?