0

オブジェクトに保存されているローマ数字の値を取得し、integer、long、float、および double の値に変換したいと考えています。適切なメソッドを作成する以外に、どこから始めればよいか本当にわかりません。誰でもアドバイスを提供できますか?

http://pastebin.com/sqwdhbtu

ありがとう!

4

3 に答える 3

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...
    }
   }
}

整数を取得したら、それを他の数値型にキャストできます。

于 2012-07-03T14:17:47.213 に答える
1

クラスは不変のように見えるため、ディープコピーは必要ないようです。

「変換」メソッドはすべて返すことができますintVal

于 2012-07-03T14:12:12.410 に答える
1

Peter が指摘したように、ディープ コピーは必要ありません。ローマ数字からアラビア数字への変換については、この質問への回答を参照してください。

于 2012-07-03T14:21:03.210 に答える