我想验证Java应用程序中的单个字符。 我不希望用户输入[a - p]
(忽略大写或小写)或numbers
以外的字符。Java字符输入验证
Scanner input = new Scanner(System.in);
System.out.print("Choose letter in range [a - p]");
letter = input.next().charAt(0);
任何想法?
我想验证Java应用程序中的单个字符。 我不希望用户输入[a - p]
(忽略大写或小写)或numbers
以外的字符。Java字符输入验证
Scanner input = new Scanner(System.in);
System.out.print("Choose letter in range [a - p]");
letter = input.next().charAt(0);
任何想法?
可以使用regex过滤输入
在所述串的开始.matches("^[a-pA-P0-9]*$") //this will not allow outside range of [a-p A-P] or numbers
^
断言位置
-
创建具有adjascent一个字符范围令牌
a-p
在a
和p
之间的范围内的单个字符(区分大小写)
A-P
范围的一个字符A
和P
之间(区分大小写)
0-9
单在0和9之间的字符范围
*
重复前面的标识zero
到infinite
次,多次尽可能
$
断言位置在字符串
像这样的结尾:
Scanner input = new Scanner(System.in);
System.out.print("Choose letter in range [a - p]");
letter = input.next().charAt(0);
if (Character.toString(letter).matches("^[a-pA-P0-9]*$")) {
System.out.println("valid input");
}else{
System.out.println("invalid input");
}
非常感谢@ Dyrandz。有用。 – danielG
我很高兴我帮助:) –
你可以用一个while循环将其封装检查,如果字母是在范围内或没有,只是不断要求用户输入一个字母
do {
System.out.print("Choose letter in range [a - p]"); letter = input.next().charAt(0);
} while (letter is not in range of [a-p]); // pseudo code
如果你不熟悉正则表达式,简单的输入检查可以照顾它。
System.out.print("Choose letter in range [a - p]");
String letter = input.nextLine();
if (letter.length() == 1 && ('a' <= letter.charAt(0) && letter.charAt(0) <= 'p')) {
System.out.println(letter);
} else {
System.out.println("Invalid input");
}
我在这就是为什么我检查信== 1信和长度落在我想要的范围的多个字符,意外闯入的情况下,使用nextLine(),否则它是无效的输入。
改进的问题语法。 – dave