如何创建一个RomanNumeral对象并将其转换回int,long等?

时间:2012-07-03 14:09:55

标签: java

我想获取存储在对象中的Roman Numeral值,并将其转换回integer,long,float和double值。我真的不知道从哪里开始,除了创建适当的方法。有人可以提供一些建议吗?

http://pastebin.com/sqwdhbtu

谢谢!

3 个答案:

答案 0 :(得分:1)

您似乎不需要深层复制,因为您的班级似乎是不可变的。

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

答案 1 :(得分: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...
    }
   }
}

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

答案 2 :(得分:1)

彼得指出你不需要深刻的副本。关于将罗马数字转换为阿拉伯数字,请参阅this question的答案。