2012-12-27 70 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(),以有你所需要的空間。