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

Java 检查字符串的特定格式是否在特定参数之间,java,Java,我已经读了好几篇文章,找不到为什么我的代码不能正常工作 我必须要求用户通过控制台输入以下格式的字符串 [国会议员][人数] 其中字母必须是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 && C

我已经读了好几篇文章,找不到为什么我的代码不能正常工作

我必须要求用户通过控制台输入以下格式的字符串

[国会议员][人数]

其中字母必须是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();
    }

while((x.length()!=2)| |(x.charAt(0)>='F'&&x.charAt(0)=6&&Character.getNumericValue(x.charAt(1))我正在使用&&when我应该使用| |,已修复


谢谢

既然OP回答了自己的问题,我就复制粘贴@lospejos的推荐,我认为这是一个比OP提出的更好的解决方案(为了子孙后代)

使用助手方法

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

您正在使用&&当您应该使用| |。
(x.charAt(0)='F'&&x.charAt(0)@JBNizet谢谢,我在另一个条件下也改变了这一点,并且工作了。我建议您使用这样的正则表达式:
如果(x.matches([a-F][1-6]){/*ok*/}否则{/*notok*/}
您可能不想使用
Character.getNumericValue
。它将接受表示罗马数字的Unicode字符(例如表示1的Ⅰ)
boolean matchesFormat(String input) {
    return input.matches("[A-F][1-6]");
}