オブジェクトに保存されているローマ数字の値を取得し、integer、long、float、および double の値に変換したいと考えています。適切なメソッドを作成する以外に、どこから始めればよいか本当にわかりません。誰でもアドバイスを提供できますか?
ありがとう!
オブジェクトに保存されているローマ数字の値を取得し、integer、long、float、および double の値に変換したいと考えています。適切なメソッドを作成する以外に、どこから始めればよいか本当にわかりません。誰でもアドバイスを提供できますか?
ありがとう!
あなたの質問は、ローマ数字を整数に変換する方法のようです。その場合、必要なのは、文字列を左から右に解析し、減算する必要のある小さい数値を探しながら結果を加算する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...
}
}
}
整数を取得したら、それを他の数値型にキャストできます。
クラスは不変のように見えるため、ディープコピーは必要ないようです。
「変換」メソッドはすべて返すことができますintVal
Peter が指摘したように、ディープ コピーは必要ありません。ローマ数字からアラビア数字への変換については、この質問への回答を参照してください。