While循环不更新TreeMap的值

我目前正在尝试编写一个程序,将0-3999的整数转换为罗马数字,并且我有正确的代码基础,因为当我键入eg 6时,它会生成IIIIII。但是,我希望将其转换为正确的罗马数字,即VI。我感觉我的While循环有问题,但是似乎无法弄清楚为什么TreeMap中的Key始终为1,意味着数字始终为I。我的代码有什么问题,以及如何将其更改为给我正确的罗马数字。任何帮助将不胜感激。


    public String generate(int number) {

    // System.out.println("NUMBER: " + number);

    if (number < MinNumber || number > MaxNumber) {

        System.out.println("Number is out of range");

        return null;

    }


    StringBuilder romanToString = new StringBuilder();

    NavigableMap<Integer, String> romanMap = createRomanMap();

    // TreeMap<Integer, String> romanMap = createRomanMap();

    for (Map.Entry<Integer, String> entries : romanMap.entrySet()) {

        Integer key = entries.getKey();

        String value = entries.getValue();


        while (number >= key) {

            number -= key;

            romanToString.append(value);

        }

    }

    System.out.println("Stringbuilder:  " + romanToString.toString());

    return romanToString.toString();


}


12345678_0001
浏览 137回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java