You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中用枚举定义Card类,main方法赋值时遇错误求助

问题分析与修复方案

嘿,我帮你定位到代码里的问题啦!你的deckOfCardsDriver类里有两个关键错误,导致调用setRank和setSuit时出现异常,咱们一步步来修正:

错误1:误用类名调用实例方法

Card类中的setRank和setSuit是实例方法(没有static修饰符),这类方法必须通过具体的Card对象实例来调用,而不是直接用类名Card调用。你已经创建了jSpade这个Card实例,应该用它来调用这两个方法。

错误2:未正确引用内部枚举常量

Rank和Suit是Card类的内部枚举,在外部类(deckOfCardsDriver)中引用它们的常量时,必须加上所属类的限定前缀,否则编译器无法识别这些常量。比如要写Card.Rank.JACK而不是直接写JACK,Card.Suit.SPADES而不是SPADES。


修正后的deckOfCardsDriver代码

import java.util.*; 

public class deckOfCardsDriver { 
    public static void main(String[] args) { 
        Card jSpade = new Card(); 
        // 用实例调用方法,并且正确引用内部枚举常量
        jSpade.setRank(Card.Rank.JACK); 
        jSpade.setSuit(Card.Suit.SPADES); 
        System.out.println(jSpade.getRank()); 
        System.out.println(jSpade.getSuit()); 
    } 
}

运行这段修正后的代码,就能正常输出JACK和SPADES啦!

内容的提问来源于stack exchange,提问作者Preston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:33:34