ищет использовать 2 перечисления для описания класса в Java и назначить их классу в основной функции - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь создать программу для представления колоды карт.Я использую два перечисления для определения класса Card.Затем в основном я пытаюсь назначить масть и ранг для карты.

public final class Card {
    enum Suit {
        HEARTS, SPADES, CLUBS, DIAMONDS
    }

    enum Rank {
        TWO(2), THREE(3), FOUR(4),
        FIVE(5), SIX(6), SEVEN(7),
        EIGHT(8), NINE(9), TEN(10),
        JACK(11), QUEEN(12), KING(13), ACE(14);

        private final int rank;

        private Rank(int rank) {
            this.rank = rank;
        }

        public int rank() {
            return this.rank;
        }
    }

    private Suit suit;
    private Rank rank;

    public void setRank(Rank rank) {
        this.rank = rank;
    }

    public Rank getRank() {
        return rank;
    }

    public void setSuit(Suit suit) {
        this.suit = suit;
    }

    public Suit getSuit() {
        return suit;
    }
}

И затем в другом файле я получаю ошибку, когда я устанавливаю Bank и setSuit

import java.util.*;

public class deckOfCardsDriver {
    public static void main(String[] args) {
        Card jSpade = new Card();
        Card.setRank(JACK);
        Card.setSuit(SPADES);

        System.out.println( jSpade.getRank());
        System.out.println( jSpade.getSuit());
    }
}

1 Ответ

0 голосов
/ 23 мая 2018

Три проблемы, которые я вижу:

Нет запятой до FOUR, это простая синтаксическая ошибка:

enum Rank{TWO(2),THREE(3)FOUR(4),FIVE(5),

Вы вызываете set методы для класса Card, которыене существует (они должны быть статичными, и это не имеет смысла).Вы должны вызывать их в экземпляре:

Card.setRank(JACK);
Card.setSuit(SPADES);

Это должно быть:

jSpade.setRank(JACK);
jSpade.setSuit(SPADES);

В-третьих, вам нужно квалифицировать перечисления с их классами (или импортировать их статически):

jSpade.setRank(Card.Rank.JACK);
jSpade.setSuit(Card.Suit.SPADES);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...