【发布时间】:2014-02-13 02:39:47
【问题描述】:
我需要一些帮助,如果你们想出一些我不知道的方法,请解释一下。
我确信使用巨大的 IF 或 SWITCH 可以做到这一点,但必须有更优化的方式。我在考虑分配值,然后制定一个算法来检查所有情况。
或者可以只比较第一个元素和它后面的元素,如果第一个小于第二个,则减去,否则相加。
我确实打算使用数组
供您参考。
M 1000
D 500
C 100
L 50
X 10
V 5
我 1
【问题讨论】:
-
这个问题最好用
LinkedHashMaps 解决,恕我直言。 this StackOverflow question 的几个答案用得很好。 -
数字字符串中的字符顺序是否有所不同(即 IV 和 VI 不一样)。您可以创建一个表示数字概念的类,在查看输入字符串时用每个值实例化它们,以及一个允许它与隔壁字符进行比较的方法。我说的是解释器模式en.wikipedia.org/wiki/Interpreter_pattern
标签: java roman-numerals