Java 用户输入验证,强制只包含字母的字符串
我正在尝试在我的方法中建立一个用户输入验证系统。。。在某种程度上,它工作正常,但尽管有代码,它仍然允许整数作为有效输入,我不希望这样,我如何修改代码,只允许字母(字符串)作为有效输入。在这一点上,我感到困惑,我尝试了这个系统,用整数,它工作完美,但用字母,没有用 洞察力Java 用户输入验证,强制只包含字母的字符串,java,validation,input,Java,Validation,Input,我正在尝试在我的方法中建立一个用户输入验证系统。。。在某种程度上,它工作正常,但尽管有代码,它仍然允许整数作为有效输入,我不希望这样,我如何修改代码,只允许字母(字符串)作为有效输入。在这一点上,我感到困惑,我尝试了这个系统,用整数,它工作完美,但用字母,没有用 洞察力 public class Player { private static String userName; private Scanner scan = new Scanner(System.in);
public class Player {
private static String userName;
private Scanner scan = new Scanner(System.in);
private boolean validInput = false;
public void createUser(){
do {
System.out.println("Please enter you name : ");
if(scan.hasNextLine()){
userName = scan.nextLine();
validInput = true;
} else {
System.out.println("You can only use letters!");
validInput = false;
scan.next();
}
} while (!(validInput));
System.out.println(getUser());
}
static void setUser(String userName){
Player.userName = userName;
}
String getUser(){
return userName;
}
}
在代码中添加一个方法来实际扫描数字 大概是这样的:
private boolean containsNumbers(String name) {
char[] chars = name.toCharArray();
for (char c : chars) {
if (c > 47 && c < 58) {
return true;
}
}
return false;
}
private boolean containsNumbers(字符串名){
char[]chars=name.toCharArray();
for(char c:chars){
如果(c>47&&c<58){
返回true;
}
}
返回false;
}
尝试类似以下内容
我将从Ubica获取代码。您也可以这样做。它是可读的:
private boolean containsNumbers(字符串名){
char[]chars=name.toCharArray();
for(char c:chars){
if(字符isDigit(c)){
返回true;
}
}
返回false;
}
更换
if(scan.hasNextLine()){
与
如果您使用hasNextLine
,扫描仪只会检查下一步是否有任何内容,尤其是字母或其他内容
当您使用正则表达式时,在本例中,p{Alpha}*
表示“零个或多个字母”(但扫描器将查找至少一个非空白字符,因此它实际上是“1个或多个字母”),扫描器的行为与您使用hasnetint()
(查找数字)时的行为非常相似
请注意,它只接受US-ASCII范围内的字母,因此没有重音或北欧字母或类似的字母,只接受a-zA-Z
另外,使用
scan.next()
,而不是nextLine()
,读取用户名-尽管您可能希望稍后调用nextLine()
,以清理该行的其余部分。如果使用nextLine()
读取用户名,则字母后面可能有非字母的内容,并且将由nextLine()读取
你到底在哪里检查用户输入的是字母而不是数字?你考虑过正则表达式吗?是的,我希望他们只使用字母,你的意思是什么?我是说Java提供了什么API来检查字符串内容()您可以指定的规则非常广泛-包括没有任何数字符号。可能这就是您需要的。这将只查看第一个字符。对:)没有真正检查代码:)我已经做了更改:)现在检查…它已修复:)只是不需要else语句
if(scan.hasNextLine()){
if(scan.hasNext("\\p{Alpha}*")){