2014-11-08 34 views
-1

新編程的學生在這裏,我正在創建一個程序,將羅馬數字輸入轉換爲十進制數字。我工作的一個轉換方法,現在,我必須使用單一維數組所以這裏是我做過什麼:如何爲羅馬數字使用一維數組?

public static int numberConversion(int number) { 

    char[] romanChar = new char[8]; 
    romanChar[I] = 1; 
    romanChar[V] = 5; 
    romanChar[X] = 10; 
    romanChar[L] = 50; 
    romanChar[C] = 100; 
    romanChar[D] = 500; 
    romanChar[M] = 1000; 

但顯然事情是不對的,因爲我在每得到一個錯誤通過NetBeans那7行說

找不到符號。符號:變量我

我知道這是錯誤的,但我怎麼能將這些羅馬數字字符的值使用一維數組正確的方式呢?

+0

使用'java.util.Map'?沒有「char」索引。如果你真的想要一個地圖,你可以使用ascii索引(即字母 - 'A'),但這是不好的設計恕我直言 – 2014-11-08 13:17:10

+0

我建議你逐字地發佈作業。我們不知道您想要做什麼,以及陣列應該如何用於轉換。 – 2014-11-08 13:40:34

回答

0
public enum RomanNumerals 
{ 
    I (1), 
    V (5), 
    X (10), 
    L (50), 
    C (100), 
    D (500), 
    M (1000); 

    private final Integer value; 

    RomanNumerals(Integer value) 
    { 
     this.value = value; 
    } 

    public int getValue() 
    { 
     return value; 
    } 

    public static void main(String... args) 
    { 
     System.out.println("The roman numeral 'V' value is: " + V.value); 
    } 
} 

我認爲使用枚舉是最好的解決方案。它提供了不可變(常量)值;這實際上是這種實現所需要的。羅馬數字的價值和特徵完全不能改變。當然,輸出是:

The roman numeral 'V' value is: 5 
0

使java成爲重要語言的一件事是Java是一種面向對象的語言,因此可以使用它。

對於示例創建一個類說RomanChar與符號字符和值這樣的整數:

Public class RomanChar{ 
    public int value; 
    public char romanCharamcter; 
} 
+0

這不是一個很好的解決方案,因爲值可能會改變。一個最佳解決方案應該提供羅馬數字作爲常數。 – hfontanez 2014-11-09 11:18:43

+0

@hfontanez我可以推薦地圖的原因,但由於OP沒有陣列的經驗,我雖然地圖對他來說是非常困難的。 – Lrrr 2014-11-09 11:33:23

+0

但是Map的問題在於它不是不可變的。現實生活中的羅馬數字是常數。表示它的軟件對象也應該是不變的。如果你使用一個類,最好的辦法就是像這樣添加這些值。但是,枚舉是類常量的更好選擇。 – hfontanez 2014-11-09 11:37:51