Я строю класс карты Блэкджек, используя enum
с конструкторами.
Когда я пытаюсь вызвать мой конструктор, я получаю java.lang.NullPointerException
.
Я прочитал некоторые темы, которые говорит, что речь идет о null
, но я до сих пор не могу понять, почему я получил эту ошибку.
Пожалуйста, смотрите мой код ниже (он компилируется, но выдает ошибку)
public class Card {
/**
* each card should have a suit and a rank
*/
// Create enumeration for suits, use our abbreviation as the String value
enum SUIT {
SPADE ("S"),
HEART ("H") ,
CLUB ("C"),
DIAMOND ("D");
// need constructor
private String abbreviation;
private SUIT(String abbreviation) {
this.abbreviation = abbreviation;
}
}
// Create enumeration for ranks with String abbreviation and int value
enum RANK {
ACE ("A", 11), // don't worry about the value of ACE = 1 now, we can work on it later
TWO ("2", 2),
THREE ("3", 3),
FOUR ("4", 4),
FIVE ("5", 5),
SIX ("6", 6),
SEVEN ("7", 7),
EIGHT ("8", 8),
NINE ("9", 9),
JACK ("J", 10),
QUEEN ("Q", 10),
KING ("K", 10);
// need constructor
private String abbreviation;
private int value;
private RANK (String abbreviation, int value) {
this.abbreviation = abbreviation;
this.value = value;
}
}
// instance var
public SUIT suit;
public RANK rank;
// Card constructor, each card should have a suit and a rank
public Card (SUIT suit, RANK rank) {
this.suit = suit;
this.rank = rank;
}
// method to get the name of the card
public String name;
{
name = this.rank.abbreviation + this.suit.abbreviation;
}
public static void main (String[] args) {
SUIT c = SUIT.CLUB;
RANK j = RANK.JACK;
System.out.println(c.abbreviation);
System.out.println(j.abbreviation);
System.out.println(j.value);
Card cd = new Card(c, j);
}
}