Java 如何创建罗马数字对象并将其转换回int、long等。?
我想获取存储在对象中的罗马数字值,并将其转换回整数、long、float和double值。我真的不知道从哪里开始,除了创建合适的方法。有人能提供一些建议吗Java 如何创建罗马数字对象并将其转换回int、long等。?,java,Java,我想获取存储在对象中的罗马数字值,并将其转换回整数、long、float和double值。我真的不知道从哪里开始,除了创建合适的方法。有人能提供一些建议吗 谢谢 您似乎不需要深度副本,因为您的类似乎是不可变的 您的“convert”方法都可以返回intVal您似乎不需要深度副本,因为您的类似乎是不可变的 您的“convert”方法都可以返回intVal您的问题似乎是如何将罗马数字转换为整数。在这种情况下,您只需要一个函数从左到右解析字符串并将结果相加,同时查找应该减去的较小数字 class R
谢谢 您似乎不需要深度副本,因为您的类似乎是不可变的
您的“convert”方法都可以返回
intVal
您似乎不需要深度副本,因为您的类似乎是不可变的
您的“convert”方法都可以返回
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...
}
}
}
类罗马数字{
弦罗马;
公共罗马数字(字符串罗马){
this.roman=roman;
}
公共罗马数字克隆(){
返回新的罗马数字(this.roman);
}
public int GetValue(){
整数和=0;
整数进位=0;
for(int i=0;i
一旦你有了整数,你就可以把它转换成其他数字类型。你的问题似乎是如何将罗马数字转换成整数。在这种情况下,您只需要一个函数从左到右解析字符串并将结果相加,同时查找应该减去的较小数字
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...
}
}
}
类罗马数字{
弦罗马;
公共罗马数字(字符串罗马){
this.roman=roman;
}
公共罗马数字克隆(){
返回新的罗马数字(this.roman);
}
public int GetValue(){
整数和=0;
整数进位=0;
for(int i=0;i
一旦你有了整数,你就可以把它转换成其他的数字类型。正如彼得所指出的,你不需要深度复制。关于罗马数字到阿拉伯语的转换,请参见。的答案,正如Peter指出的,您不需要深度复制。关于罗马数字到阿拉伯数字的转换,请参见的答案。您所说的“深度复制”是什么意思?它甚至没有任何状态,只有内部类有。你说的“深度复制”是什么意思?它甚至没有任何状态,只有内部类有。谢谢,这是可行的,但是如果我真的想创建一个RomanNumeric对象并克隆它呢?@TimeBomb006将解析器方法放在RomanNumeric类中。如果你需要克隆它,你只需要复制罗马数字串。谢谢,这是可行的,但是如果我真的想创建一个罗马数字对象并克隆它呢?@TimeBomb006将解析器方法放在RomanNumeric类中。如果你需要克隆它,你只需要复制罗马数字串。