我如何通过扫描仪和字符串接受用户接受SPECIFIC字符?
E.g。如果我只想要两个角色," *"和" " (空格)用于输入。其他所有内容都将无效,并会提示用户该内容不足并在不提交的情况下重做该条目。
干杯!
答案 0 :(得分:1)
您可以使用RegEx字符集排除:
if (input.matches(".*[^* ].*")) {
//wrong input
} else {
//ok!
}
请注意,将空字符串作为有效字符传递,由您的用例决定是否另外验证字符串的长度。
答案 1 :(得分:1)
如果要在之后检查字符串的内容,则可以检查它是否与正则表达式[* ]+
匹配,这意味着:一个或多个系列(+
量词)字符'*'
或' '
(空格)。
代码:
System.out.print("Please provide string containing only spaces or * : ");
String userInput = //read input from user
while(!userInput.matches("[* ]+")){
System.out.println("Your input was incorrect.");
System.out.print("Please provide string containing only spaces or * : ");
userInput = //read input from user
}
//here we know that data in userInput are correct
doSomethingWithUserData(userInput);
答案 2 :(得分:0)
String input = scanner.nextLine();
if (!(input.matches("[ *]*"))) {
System.out.println("Please use only space and * characters");
// do something that causes program to loop back and redo input
}
matches
测试整个input
字符串是否与模式匹配。模式由字符类中的零个或多个字符序列匹配(第二个*
表示零次或多次出现),字符类由两个字符空间和*
组成。
如果您需要输入至少为一个字符,请将第二个*
更改为+
,但也要更改错误消息。或者添加单独的input.isEmpty()
测试。
关于Scanner
:使用scanner.nextLine()
输入整行。 (其他Scanner
方法在看到空格字符时往往会停止,这不是我认为你想要的。)