2012-12-27 71 views
0

我正在执行用于将数字转换为单词的Java代码(例如,999 - >九百九十九)。我用两个字符串来定义单词。使用枚举代替字符串

private static final String[] tensWords ={ "", " ten", " twenty", " thirty"} 
public enum tenWords{ten, twenty, thirty} 

当我使用枚举我不能够把空白”“为String数组。所以它导致错误的输出。请建议如何解决这个问题。下面是我使用枚举访问值的代码。

if (number % 100 < 20) 
{ 
    soFar = tensWords.values()[number % 100].toString(); 
    number /= 100; 
} 

回答

1

你可以使用枚举和赋值:

public enum TenWords{ 
    ZERO(""), TEN("ten"), TWENTY("twenty"), THIRTY("thirty"); 

    private final String value; 
    private TenWords(String value) { 
     this.value = value; 
    } 
    public String getValue() { 
     return value; 
    } 
} 

和访问它想:

System.out.println(TEN.getValue()); 
System.out.println(ZERO.getValue()); 
+0

你应该让你的构造函数也**私人**和你的领域**最后**我认为 –

+0

谢谢,Andreas_D我照你的建议做了,它工作正常。非常感谢。 – shekhar

5

您可以使用枚举参数存储无论你在枚举值要:

enum TensWords { 
    NONE(""), 
    TEN("Ten"), 
    TWENTY("Twenty"); 
    ///... 

    private final String text; 

    TensWords(String text) { 
     this.text = text; 
    } 

    public String getText() { 
     return text; 
    } 
} 

还考虑将你的代码,以确定由数TensWords到枚举作为一个静态方法。

+0

你应该让你的构造函数也**私人**我认为 –

+0

这是没有必要的,只要编译器不允许你实例化枚举。这与将'p​​ublic'修饰符应用于接口方法相同 - 您可以这样做,但如果没有它们,它会更好。 – hoaz

0

可以实现对枚举的toString(),以有你所需要的空间。