Java - 罗马数字有效性

Raj*_*ikh 0 java validation roman-numerals

我正在编写一个程序来添加两个罗马数字而不转换为任何基础.我有一切工作,但我不知道如何检查我的输入字符串是否是一个有效的罗马数字.

这些是检查有效性的规则:

  1. 不允许任何数字连续五行
  2. 在最多4次运行中允许一些数字.它们是I,X,C和M.其他(V,L,D)只能单独出现.
  3. 一些较低的数字可以在较高的数字之前,但仅在它们单独出现时才会出现.例如"IX"是好的,但"IIIX"不是.
  4. 但这仅适用于数字对.连续三个递增的数字无效.例如"IX"可以,但"IXC"不是.
  5. 始终允许没有运行的单个数字

我没有真正在这一步取得很大进展,也没有任何工作.任何帮助都会很棒!

Jef*_*son 5

为什么不使用正则表达式:

boolean valid = word.matches("^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$");
Run Code Online (Sandbox Code Playgroud)

看看paxdiablo的帖子: 你如何只使用正则表达式匹配有效的罗马数字?