вызвать метод void - PullRequest
       9

вызвать метод void

1 голос
/ 27 января 2011

Мне нужно вызвать метод 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 ]

8 голосов
/ 27 января 2011

Вы должны поместить этот вызов в свой конструктор для класса:

public GameRules() {
    myDeckOfCards.shuffle();
}

Конструктор - это место, где вы выполняете задачи инициализации для ваших объектов.

Кроме того, у вас действительно не должно быть метода с именем GameRules(), который возвращает ImageIcon. Вы должны переименовать этот метод getImage или что-то в этом роде. Затем, когда вы создадите GameRules с consturctor и вызовете getImage, колода будет перетасована.

Пример:

GameRules gr = new GameRules(); // deck gets shuffled in constructor call
JLabel test2 = new JLabel(gr.getImage());

Ознакомьтесь с учебниками по Java для хорошего учебника по написанию конструкторов для ваших классов.

5 голосов
/ 27 января 2011

Либо используйте конструктор в соответствии с предложением, либо, если в какой-то момент у вас есть несколько конструкторов, вы можете переместить общий для них код в инициализатор:в комментариях лучше использовать конструктор, при необходимости объединяя конструкторы.Оказывается, инициализаторы экземпляров лучше всего использовать в анонимных классах.

2 голосов
/ 27 января 2011

Почему бы вам не вызвать метод shuffle в конструкторе deck напрямую?

...