0

我正在尝试打印出这个枚举

 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

4 回答 4

4

基本上,您正在将description(which is null) 的值分配给自身...

改变

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

Menu(String name) {
    this.description = name;
}
于 2013-06-14T06:28:20.490 回答
2

以下可能是您想要的(并且您不需要 arg-constructor) -

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

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

于 2013-06-14T06:28:56.883 回答
0

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

这将起作用

    Menu[] menu = Menu.values();
    for(Menu m: menu)
    {
        System.out.printf("%d) %s%n", m.ordinal() + 1, m.name());
    }
于 2013-06-14T06:46:41.963 回答