当前位置: 首页 > 面试题库 >

用户输入验证,强制只包含字母的字符串

易成天
2023-03-14
问题内容

我试图在我的一种方法中建立用户输入验证系统…在一定程度上可以正常工作,但是尽管有代码,但它仍然允许整数作为有效输入,我不希望这样,我怎么能更改此代码,以仅允许将字母(字符串)作为有效输入。在这一点上,我感到困惑,我尝试使用整数对该系统进行测试,它可以完美地工作,但是使用字母,无济于事。

有见识?

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;    
    }

}

问题答案:

更换

            if(scan.hasNextLine()){

            if(scan.hasNext("\\p{Alpha}*")){

如果使用hasNextLine扫描仪,则仅检查下一步是否有 东西 ,特别是对于字母或其他物品。

当您使用正则表达式时,在这种情况下p{Alpha}*,其含义是“零个或多个字母”(但是扫描仪将查找至少一个非空格字符,因此实际上是“
1个或多个字母”),扫描仪的行为类似于当您执行相同的操作hasNextInt()(正在寻找数字)时会执行此操作。

请注意,它将仅接受US-ASCII范围内的字母,因此,仅不带重音符号或北欧字母或类似的字母a-zA-Z

另外,请使用scan.next()而不是读取用户名nextLine()-尽管您可能想nextLine()稍后再调用以清理该行的其余部分。如果您用于nextLine()读取用户名,则字母后面可能有一些不是字母的内容,它将由读取nextLine()



 类似资料:
  • 问题内容: 我正在尝试验证我的字符串是否与模式匹配。也就是说,完整的字符串可以写为该模式。但是,如果有任何子字符串匹配该模式,则返回。(如回报,这是我不想在这个例子中,我宁愿验证,整个字符串只含有少量拉丁字母)。 问题答案: 您可以使用 开始 和 结束 标记,并分别指示开始,在您的正则表达式模式的字符串的结尾。这样,您可以使表达式仅匹配整个字符串,而不匹配任何子字符串。在您的情况下,它将如下所示:

  • 我能够通过使用下面这个问题的注释提供的代码来解决这个问题。所有其他帖子都是有效的! 我使用的有用的东西来自第一个评论。虽然提供的所有示例代码似乎也是有效的!

  • 问题内容: 基本上,我的情况要求我检查在一种情况下由用户从键盘输入定义的字符串是否仅为字母字符,而在另一种情况下仅为数字。这是用Java编写的。 我当前的代码: 我需要确保StudentID仅是数字,并且每个名称段都是字母。 问题答案: 已经可以使用方法检查下一个标记是否具有给定的模式/类型。 这是一个使用正则表达式用于验证下一个标记仅由字母组成的示例: 这是一个示例会话: 要验证下一个令牌是可以

  • 问题内容: 因此,我几乎搜索了单词“ string”,“ python”,“ validate”,“ user input”等等的每个排列,但是我还没有找到一种适合我的解决方案。 我的目标是提示用户是否要使用字符串“ yes”和“ no”进行另一笔交易,我认为字符串比较在Python中是一个相当简单的过程,但是有些不起作用对。我使用的是Python 3.X,据我所知,输入应使用字符串而不使用原始输

  • 这是我刚接触Python时就一直在阅读的一本书中的一些代码……这一部分按它应该的方式工作 我的困境是…我需要验证输入是什么…因此,如果用户输入的是一个字符串(比如“五”而不是数字),而不是q或数字,它会告诉他们“很抱歉,“五”是无效的。请重试…然后它会再次提示用户输入。我是Python新手,一直在为这个简单的问题绞尽脑汁 *更新**因为我没有足够的积分来为我自己的问题添加答案,所以我在这里发布这个

  • 我有这三个字符串: 我如何检查这些字符串中哪一个只包含字母还是只包含数字(用R表示)? 只能在字母检查中为TRUE 它对很有效,但对也很有效,这是我不想要的。 提前谢了。