Java 为什么我得到的黑桃无法解析为类型错误?

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

我最近决定开始在我的卡片套装中使用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 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之间;或者,为卡值创建枚举。这有点像一次性输入,但会产生更多描述性代码(例如,您可以使用
    Value.ACE
    ,而不必考虑是否应该使用1或14来表示该卡)

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;