我目前正在尝试编写一个程序,将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();}
添加回答
举报
0/150
提交
取消