我是java新手,我很困惑为什么变量total没有更新。当我打印它时,它只打印初始数字 0。此外,该方法值返回基于罗马字符的数字。我遗漏了类(class)行,但这并不重要。
public static void main(String[] args)
{
double total = 0;
String romanString = "MCMLXXVIII";
double difference = 0;
while (romanString.length() > 0 )
{
if (romanString.length() == 1 || value(romanString.substring(0, 1)) >= value(romanString.substring(1, 2)))
{
total = total + value(romanString.substring(0, 1));
romanString = romanString.substring(1);
}
else
{
difference = value(romanString.substring(1, 2)) - value(romanString.substring(0, 1));
total = total + difference;
romanString = romanString.substring(1);
}
System.out.println(total)
}
}
public static double value(String character)
{
if (character == "I")
return 1;
else if (character == "V")
return 5;
else if (character == "X")
return 10;
else if (character == "L")
return 50;
else if (character == "C")
return 100;
else if (character == "D")
return 500;
else if (character == "M")
return 1000;
return 0;
}
}
最佳答案
字符串是一个对象,所以我认为在您的 value()
方法中,您必须使用 .equals()
来避免比较内存地址。目前,使用 ==
时,当您比较 2 个内存地址时,value()
将始终返回 0
。
关于java - 我的总数没有在循环中更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46414338/