检查特定参数之间是否有特定的字符串格式

时间:2017-05-12 22:43:51

标签: java

我已经阅读了几篇文章但无法找到为什么我的代码无效。

我必须要求用户通过控制台输入一个字符串,格式如下。

[CapitalLeter] [号码]

字母必须是A,B,C,D,E或F,以及1到6之间的数字。

这是我的代码。

        while ((x.length() != 2) || (x.charAt(0)>='F' && x.charAt(0)<='A') || (Character.getNumericValue(x.charAt(1))>=6 && Character.getNumericValue(x.charAt(1))<=1))
{
        System.out.println(msg);
        x = (new Scanner(System.in)).nextLine();
    }

如果我以3F为例,它会接受它,而且它是错误的。

你能帮助我吗?

由于

2 个答案:

答案 0 :(得分:1)

由于OP回答了自己,我只是复制粘贴@lospejos的一个推荐,我认为这是一个比OP提出的更好的解决方案(仅为了后代的缘故)

if (matchesFormat(input)) {
    /* ok */ 
} else { 
    /* not ok */
}

使用辅助方法

boolean matchesFormat(String input) {
    return input.matches("[A-F][1-6]");
}

答案 1 :(得分:0)

我正在使用&amp;&amp;当我应该使用||时,修复。

由于