Java实现firstName、lastName合法性校验时自定义函数异常排查
代码问题根因
- 逻辑判断条件错误:需求要求字符满足「是字母 或 空格」即可,但现有代码的两个if判断要求字符必须同时是字母和空格才能通过校验,逻辑完全相悖。
- 循环提前终止:
return true语句写在了for循环内部,遍历第一个字符后就会直接返回结果,完全不会校验后续字符,是输入非法内容仍返回true的核心原因。 - 缺少空值校验:如果传入的name是null,会直接触发空指针异常。
修复后实现代码
public static boolean checkValidName(String name){ // 空值、全空格场景校验,可根据业务需求调整返回规则 if (name == null || name.trim().isEmpty()) { return false; } for(int i = 0; i < name.length(); ++i){ char ch = name.charAt(i); // 只要字符既不是字母也不是空格,直接判定不合法 if(!Character.isLetter(ch) && !Character.isWhitespace(ch)){ return false; } } // 所有字符校验通过才返回合法 return true; }
逻辑说明
- 新增空值防御逻辑,避免运行时空指针异常,空串、全空格的返回结果可根据业务需求自行调整
- 遍历所有字符,只要出现一个既不是字母也不是空格的字符(包含数字、特殊符号等),立刻返回false
- 全部字符校验完成后才返回true,完全匹配「仅允许输入字母或空格,包含数字返回false」的需求规则
内容的提问来源于stack exchange,提问作者高颜值の美食
相关产品推荐
相关产品推荐

