开发者社区> 问答> 正文

Java中enum枚举的使用?报错

教材里面有段关于枚举的代码,但一直报错,麻烦高手看一下

import java.util. *;
    public class EnumTest {

        public static void main(String[] args) {
            Scanner in=new Scanner(System.in);
            System.out.print("请输入服装型号:(SMALL,MEDIUM,LARGE,EXTRA_LARGE,EXTRA_EXTRA_LARGE)");
            String input=in.next().toUpperCase();
            Size size=Enum.valueOf(Size.class,input);
            System.out.println("Size="+size);
            System.out.println("abbreviation="+size.getAbbreviation());
            if(size==Size.EXTRA_LARGE^size==Size.EXTRA_EXTRA_LARGE)
                System.out.println("很好,你注意到了下划线");

        }
        public static String abbreviation;
        enum Size{SMALL,MEDIUM,EXTRA_LARGE,EXTRA_EXTRA_LARGE}
        private void Size(String abbreviation){this.abbreviation=abbreviation;}
        public String getAbbreviation(){return abbreviation;}
    }



展开
收起
爱吃鱼的程序员 2020-06-10 14:08:12 615 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    按照你给的代码来看,遇到的报错是<preclass="brush:java;toolbar:true;auto-links:false;">System.out.println("abbreviation="+size.getAbbreviation());

    因为size内并没有getAbbreviation()方法。并且size也不能调用EnumTest内的getAbbreviation()方法,所以报错了。


    把错误行代码注释或者改成如下,即可运行。

    <preclass="brush:java;toolbar:true;auto-links:false;">System.out.println("abbreviation="+EnumTest.abbreviation);



    根据Abbreviation方法的字面含义来看,应该是要判断后存入Size的缩写如:SMALL→S

    判断方法我就不赘述了。

    getAbbreviation这个方法不存在,因为你这么定义getAbbreviation是EnumTest的方法,而不是Size这个枚举的,所以你直接size.getAbbreviation()是编译失败的。

    2020-06-10 14:08:29
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载