我正在用Java编写琐事游戏,除验证用户答案的一部分外,我已完成所有工作。因此,基本上,我将提示用户问题和可能的答案,然后用户将输入他们的答案。现在,我正在尝试检查他们的答案,然后再检查是否正确,因此如果错误,我可以提示他们输入其他答案。规则是他们的答案必须是一个从零到四个字符的字符串,只能使用1-4位数字,并且不能重复字符。因此1234有效,24有效,321有效,589无效,abc无效,111无效,1233无效。到目前为止,除了重复的字符外,我已经涵盖了所有条件。起初我用
if (answer.matches("^[1-4]{0,4}$")) { // valid check if correct
这会处理所有重复项,但重复项除外。接下来我尝试了
if (answer.matches("^1?2?3?4?$")) { // valid check if correct
如果用户以升序输入数字(即123、234、24、12、2344等),这将处理重复项。唯一的问题是,如果用户输入的内容类似于432,即使它输入无效,也将被视为无效应该被认为是有效的。我知道为什么这与我的正则表达式不匹配,但是我能想到的唯一其他解决方案是列出所有可能的解决方案,但是显然我不会在if语句中放入24个条件。有什么我可以做的正则表达式来解决的吗?我知道我可以用蛮力方式做到这一点,但是我宁愿有一个高效的正则表达式来解决这个问题。谢谢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句