0

我想获取存储在对象中的罗马数字值并将其转换回整数、长整数、浮点数和双精度值。除了创建适当的方法之外,我真的不知道从哪里开始。任何人都可以提供一些建议吗?

http://pastebin.com/sqwdhbtu

谢谢!

4

3 回答 3

1

您似乎不需要深拷贝,因为您的类似乎是不可变的。

您的“转换”方法都可以返回intVal

于 2012-07-03T14:12:12.410 回答
1

您的问题似乎是如何将罗马数字转换为整数。在这种情况下,您只需要一个函数来从左到右解析字符串并将结果加在一起,同时寻找应该减去的较小数字。

class RomanNumeral{
  String roman;

  public RomanNumeral(String roman){
    this.roman = roman;
  }

  public RomanNumeral Clone(){
    return new RomanNumeral(this.roman);
  }

  public int GetValue(){
    int sum = 0;
    int carry = 0;
    for(int i = 0; i< roman.Length;i++)
    {
     if(i<roman.Length-1){
       if(GetRomanValue(roman[i])>GetRomanValue(roman[i+1])){
          sum += GetRomanValue(roman[i]) - carry;
          carry = 0;
       }
     else carry = GetRomanValue(roman[i]);
    }
    else sum += GetRomanValue(roman[i]) - carry;
  }
 }

  int GetRomanValue(char c)
  {
    switch(c){
     case 'I': return 1;
     case 'V': return 5;
     //and so on...
    }
   }
}

获得整数后,您可以将其转换为其他数字类型。

于 2012-07-03T14:17:47.213 回答
1

As Peter pointed out you don't need a deep copy. Regarding the conversion of roman numeral to arabic, see the answers to this question.

于 2012-07-03T14:21:03.210 回答