尝试从以下地图中打印出特定值
Map strokes = [1000:['M','?','?'],
100:['C','D','M'],
10:['X','L','C'],
1:['I','V','X']]
换句话说,如果我的值是1234,我希望它基于以罗马数字格式打印的switch语句。这意味着我要打印M的值,然后打印C和C与X和X以及X和I和V,然后将所有内容放到MCCXXXIV的值中。
到目前为止,我正在尝试从键列表1000中打印出第一个字符。
我只能从“密钥列表1000”中获取整个值
输出['M','?','?']
答案 0 :(得分:0)
您可以按原样转换所有内容,然后替换边框情况,例如:
我使用地图编写了转换器的脚本:
strokes = [M:1000, C:100, X:10, I:1]
int number = 5555;
int numSize = String.valueOf(number).length();
String roman = ""
strokes.each { stroke ->
while ( number >= stroke.value ) {
number -= stroke.value
roman += stroke.key
}
}
println "raw: " + roman
println toRoman(roman)
private static String toRoman(String number) {
return number
.replace("IIIII", "V")
.replace("IIII", "IV")
.replace("VV", "X")
.replace("VIV", "IX")
.replace("XXXXX", "L")
.replace("XXXX", "XL")
.replace("LL", "C")
.replace("LXL", "XC")
.replace("CCCCC", "D")
.replace("CCCC", "CD")
.replace("DD", "M")
.replace("DCD", "CM");
}
示例:
5555:
raw: MMMMMCCCCCXXXXXIIIII
MMMMMDLV
1234:
raw: MCCXXXIIII
MCCXXXIV