调用void方法

时间:2011-01-27 16:21:52

标签: java void

我需要在调用另一个方法之前调用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()里面并没有给出错误,但是我需要在比赛前洗牌所有牌,而不是每次给卡牌方法。

感谢

3 个答案:

答案 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方法?