我目前正在尝试编写一个程序,将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();
}
相关分类