Java 为什么我得到的黑桃无法解析为类型错误?
我最近决定开始在我的卡片套装中使用enum,但是无论我如何键入代码,我似乎都无法解决这个错误 编辑:Java 为什么我得到的黑桃无法解析为类型错误?,java,enums,Java,Enums,我最近决定开始在我的卡片套装中使用enum,但是无论我如何键入代码,我似乎都无法解决这个错误 编辑: /** * * A basic constructor class that build the card object. * The card object will contain value for both the Suit and * card's Value. * * * */ public class Card { public Enum SUI
/**
*
* A basic constructor class that build the card object.
* The card object will contain value for both the Suit and
* card's Value.
*
*
*
*/
public class Card {
public Enum SUIT{SPADE, CLUB, DIAMOND, HEART};
// This will identify the card suit.
public Enum suit;
//This will hold the card value.
//Jack = 11 ... Ace = 14
public int value;
public Card(Enum suit, int value){
this.suit = suit;
this.value = value;
}
}
我已经在网站上找到了各种答案,并浏览了Oracle上的官方Java文档。有人能帮我弄清楚吗
更新:
/**
*
*构建卡对象的基本构造函数类。
*卡片对象将同时包含西装和衬衫的值
*卡的价值。
*
*
*
*/
公务舱卡{
public enum Suit{SPADE, CLUB, DIAMOND, HEART};
// This will identify the card suit.
private final Suit suit;
//This will hold the card value.
//Jack = 11 ... Ace = 14
private final int value;
public Card(Suit suit, int value){
this.suit = suit;
this.value = value;
}
}
下面是错误的屏幕截图:
如果要定义枚举类型
// lowercase
public enum SUIT{SPADE, CLUB, DIAMOND, HEART};
如果你想要一套可变的西装
SUIT suit;
Enum
是一个类名(它是类的名称)。您需要将套装
类别声明为:
public enum Suit{SPADE, CLUB, /* etc */}
然后,为了接受Suit
的实例作为构造函数的参数,将参数类型设置为Suit
,以及相应的字段:
public Suit suit;
public int value;
public Card(Suit suit, int value) {
this.suit = suit;
this.value = value;
}
还有几个其他的观察结果:
- 将
和suit
字段设置为私有,并添加访问者方法(value
,getSuit()
)。目前,没有什么能阻止班外的人改变他们getValue()
<> LI>也要考虑使它们成为代码>最终< /COD>,除非有一个很好的理由来在这个类中稍后更改它们,或者您想为它们公开设置器(我不能想象这是什么原因)
- 检查
值的范围是否在2到14之间;或者,为卡值创建枚举。这有点像一次性输入,但会产生更多描述性代码(例如,您可以使用
,而不必考虑是否应该使用1或14来表示该卡)Value.ACE
enum
是您要查找的正确关键字
更新
要使代码正常工作,请将Suit
(主要是打字错误)更改为Suit
(由您声明的枚举)
您最近的编辑显示了包含以下代码的屏幕截图:
public class Card {
public enum Suit {SPADE, CLUB, DIAMOND, HEART};
public final SUIT suit;
您的枚举声明很好。您收到的错误消息“enum无法解析为类型”表明您的编译设置针对的是过时的Java版本。枚举在Java1.5之前不存在
确保您正在使用最新的Java编译器(1.8),然后进入项目的Eclipse属性。单击Java编译器。在JDK Compliance下,确保将其设置为1.5或更高版本(最好是1.8)
你的下一个错误是诉讼适合请注意信件的大小写。我已经完成了小写枚举,但它会说枚举无法解析为类型。在Java中,没有
enum'',只有enum。您必须将
public Enum''suit更改为public suit''suit,并将参数Enum suit''更改为`` suit suit',如下所示:public suit suit;公共卡(套装,int值){…}@65-e9-7e-17:它是所有enum
类隐式扩展的类。这不是一个关键词。为什么要引入一个与每件西装价值相关联的价值的复杂性呢?OP的问题并不要求:每张卡都有一个值,而不是每一套。我计划为值创建一个枚举,但仍然试图弄明白为什么eclipse说枚举声明上有错误,即使我修改了编辑后的内容。我仍然会在上面的更改中得到相同的错误。上述内容是否仅适用于特定的JRE?我目前使用的是JRE1.8。它可以与任何支持enum
、Java 5及更高版本的软件配合使用。请不要根据答案更改您的问题。如果他们推荐问题中已经存在的东西,那么很难理解答案。如果需要,请在下面的问题中添加更新。您当前拥有的代码不会出现类似“SPADE无法解析为类型”的错误。请添加发生此错误的代码。啊,很抱歉,这仍然是新的,但正在学习。添加了错误并还原原始代码并添加了更新的代码。您最近编辑的代码与图像中显示的代码不同。你要我们看哪个代码?另外,不用链接到外部图像托管服务,只需。@KlitosKyriacou很抱歉从pc复制和粘贴到手机,现在已经修复了。我把重点放在更新版上,因为这是正确的声明。然而,我得到的错误,显示在图像中。啊,我做了,但它说我至少做了10次。所以我选择了一种更迂回的方式。好的,谢谢!!!!但是现在我注意到我没有1.8版本,即使我最近在我的计算机上安装了它并设置了构建路径。我必须在eclipse上做些什么才能让它显示出来吗?请确保已经为jdk1.8设置了PATH环境变量,如下所示。然后,设置(或创建)环境变量JAVA_HOME以指向JDK目录(例如C:\Program Files\JAVA\jdk1.8.0_66)。最后,将Eclipse指向最新的jdk(例如,请参阅),我设置了JAVA_HOME变量,但没有找到任何关于如何处理它的指令。上面的相关问题没有说明太多。您能就如何使用它给出一些建议吗?定义JAVA_HOME并不总是必要的,但它可能很有用,因为有些软件产品,如IDE、构建工具和其他应用程序,使用JAVA_HOME环境变量来查找jdk目录。
public class Card {
public enum Suit {SPADE, CLUB, DIAMOND, HEART};
public final SUIT suit;