首页 > 解决方案 > 检查Java中的有效名称

问题描述

我想检查有效的名字和姓氏。这是我实现的代码,只要输入名字和姓氏的数字,它就会返回 false。但它允许用户包含字母或空格。

当我尝试输入数字时,以下 checkName 函数仍然返回 true:

public static boolean checkValidName(String name){
    
    for(int i = 0; i < name.length(); ++i){
        char ch = name.charAt(i);
        
        if(!Character.isLetter(ch)){
            return false;
        }   
            
        if(!Character.isWhitespace(ch)){
            return false;
        }
        return true;
    }
    return true;
}

标签: java

解决方案


如果我们要检查name不应该包含任何数字(但可以包含特殊字符,如, ,&%)的条件。$*

public static boolean checkValidName(String name) {
    for (int i = 0; i < name.length(); ++i) {
        char ch = name.charAt(i);
        if (Character.isDigit(ch)) {
            return false;
        }
    }
    return true;
}

由于 OP 提到name正在验证,我认为通常名称不包含数字和特殊字符。如果我们想将 限制name只有字母和空格(没有数字,也没有特殊字符,如, ,&%),那么我们需要返回除了字母或空格之外的任何内容。$*falsecharacter

public static boolean checkValidName(String name) {
    for (int i = 0; i < name.length(); ++i) {
        char ch = name.charAt(i);

        // If the character is not a letter and not a whitespace, return false.
        if (!Character.isLetter(ch) && !Character.isWhitespace(ch)) {
            return false;
        }
    }
    return true;
}

推荐阅读