java - 我的总数没有在循环中更新

标签 java roman-numerals

我是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/

相关文章:

java - 使用 Java 读取文本文件会抛出 IOException

java - 获取一个新字符串,除非某个值等于 false java

Android TalkBack 宣布 "List"为 "Fifty first"

latex - 更改 Latex 部分编号显示

java - 如何在Class.class中使用泛型

java - 在循环java中打印计数

具有两个数组的 Java 到 Mips

java - 阿拉伯语到罗马语转换器: ArrayIndexOutOfBounds

python - 阿拉伯数字到罗马数字转换器 : Number containing 4 will not convert

java - ''s cannot be resolved' ' 如何解决此错误?