我试图弄清楚如何验证用户输入。我希望用户输入 像a1或B6这样的东西。输入应该是以下模式。从a到h的信后跟一个 数字从1到8,[字符串数字]。如果不是资本,也应该接受这封信。这是我的代码。非常感谢任何帮助!
private void getUserInput() {
Scanner scan = new Scanner(System.in);
userGuess1 = scan.nextLine();
// Here i should validate if the input is in the right format
userGuess = userGuess1;
答案 0 :(得分:2)
您可以使用String
方法matches(String regex)
方法。
userGuess1 = scan.nextLine();
if(userGuess1.matches("[a-hA-H][1-8]")) {
// valid
} else {
// invalid
}
这导致以下结果:
A1 - valid
H9 - invalid
a2 - valid
h3 - valid
i8 - invalid
zk - invalid
<小时/> 正则表达式细分!
-
短划线相结合。[a-hA-H]
匹配大写或小写字母a
到h
[1-8]
匹配1 <= number <= 8
答案 1 :(得分:0)
您可以先将输入拆分为字符数组。您现在可以使用charArray.length检查其输入的长度。在此之后,您可以使用if和else语句和&lt;来检查数组中的两个字符是否在您所需的字符之间。和&gt;这里的比较是一个简单的例子:( Character.toLowerCase(char)表示如果用户输入大写或小写字母无关紧要)
Scanner scan = new Scanner(System.in);
String input = scan.next();
char[] charArray = input.toCharArray();
boolean validated = true;
if(charArray.length != 2){
validated = false;
}
if(charArray[1] > '8' || charArray[1] < '1'){
validated = false;
}
if(Character.toLowerCase(charArray[0]) > 'h' || Character.toLowerCase(charArray[0]) < 'a'){
validated = false;
}