我想获取存储在对象中的罗马数字值并将其转换回整数、长整数、浮点数和双精度值。除了创建适当的方法之外,我真的不知道从哪里开始。任何人都可以提供一些建议吗?
谢谢!
我想获取存储在对象中的罗马数字值并将其转换回整数、长整数、浮点数和双精度值。除了创建适当的方法之外,我真的不知道从哪里开始。任何人都可以提供一些建议吗?
谢谢!
您似乎不需要深拷贝,因为您的类似乎是不可变的。
您的“转换”方法都可以返回intVal
您的问题似乎是如何将罗马数字转换为整数。在这种情况下,您只需要一个函数来从左到右解析字符串并将结果加在一起,同时寻找应该减去的较小数字。
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...
}
}
}
获得整数后,您可以将其转换为其他数字类型。
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.