java - 希望使用 2 个枚举来描述 java 中的类并将它们分配给 main 函数中的类
问题描述
我正在尝试制作一个程序来代表一副纸牌。我使用两个枚举来定义一个类 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;
}
}
然后在另一个文件中,当我 setRank 和 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());
}
}
解决方案
我可以看到三个问题:
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);
推荐阅读
- python - Python 无法访问命令行参数
- flutter - 可滚动屏幕 - Flutter
- python - OpenCV Python-过滤矩形以找到微型汽车的道路中心线
- javascript - ajax 没有获取会话
- php - Laravel 验证 - 不同的数组字段不起作用
- django - Django 模型字段未显示在管理页面中
- firebase - Firebase 模拟器:datasnapshot.ref 抛出“无法解析 Firebase url ...”
- python - 根据索引列表从 numpy 数组中获取和替换值
- excel - 创建数据透视表
- python - Python 3.7 在类型注释上抛出 NameError 但我不想导入定义它的模块