打印枚举菜单

时间:2013-06-14 06:25:42

标签: java enums

我正在尝试打印出这个Enum

 private enum Menu
        {
            Insert("Insert"), 
            Search("Search"), 
            Size("Size"), 
            Height("Height"), 
            Clear("Clear"),
            Inorder("Inorder"),
            Preorder("Preorder");

            private String description;

            Menu()
            {
                this.description = this.name();
            }

            Menu(String name)
            {
                this.description = description;
            }

            public String toString()
            {
                return description; 
            }
         }

使用这个:

            Menu[] menu = Menu.values();
            for(Menu m: menu)
            {
                System.out.printf("%d) %s%n", m.ordinal() + 1, m);
            }

我的结果是:

Choose an option to complete
1) null
2) null
3) null
4) null
5) null
6) null
7) null

我怎么能解决这个问题?这是我第一次使用枚举,而我正在努力弄清楚为什么我会这么做。

4 个答案:

答案 0 :(得分:4)

基本上,您要为自己分配descriptionnull)的值...

更改

Menu(String name) {
    this.description = description;
}

Menu(String name) {
    this.description = name;
}

答案 1 :(得分:2)

以下可能是您想要的(并且您不需要arg构造函数) -

Menu(String d) {
    this.description = d;
}

否则,toString()默认返回枚举时的名称。

答案 2 :(得分:0)

  • 删除空构造函数,它永远不会被调用。
  • 不要将toString()用于此目的,因为如果您想稍后更改它,将很难跟踪它的使用位置。我们只将toString用于调试输出或错误消息。

答案 3 :(得分:0)

这将有效

    Menu[] menu = Menu.values();
    for(Menu m: menu)
    {
        System.out.printf("%d) %s%n", m.ordinal() + 1, m.name());
    }