You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java向LinkedList添加User时,如何简化多字符串空值判断?

几种简化字符串空值判断的方案

首先要注意:JOptionPane.showInputDialog可能返回null(用户点击取消时),只判断isEmpty()会触发空指针异常,所以判断逻辑最好同时覆盖null和空字符串的情况。

1. 封装通用的空值检查工具方法

写一个静态工具方法,一次性搞定空值和空字符串判断,之后每次输入直接调用:

public class StringUtils {
    public static boolean isBlank(String str) {
        return str == null || str.trim().isEmpty();
    }
}

然后改造你的addUser方法,代码会简洁很多:

public void addUser() {
    boolean hasError;
    do {
        hasError = false;
        Users user = new Users();
        
        String name = JOptionPane.showInputDialog(null, "Enter your name");
        if (StringUtils.isBlank(name)) {
            hasError = true;
        } else {
            user.setName(name);
            String password = JOptionPane.showInputDialog(null, "Enter a password");
            if (StringUtils.isBlank(password)) {
                hasError = true;
            } else {
                user.setPassword(password);
                // 其他字段输入同理,直接调用isBlank判断
                // 所有字段验证通过后,添加到LinkedList
                yourLinkedList.add(user);
            }
        }
    } while (hasError);
}

2. 封装输入+验证的通用方法

如果要进一步减少重复代码,可以把「弹出输入框+验证」的逻辑封装成一个方法,直到用户输入有效内容才返回:

private String getValidInput(String prompt) {
    String input;
    do {
        input = JOptionPane.showInputDialog(null, prompt);
        if (StringUtils.isBlank(input)) {
            JOptionPane.showMessageDialog(null, "输入不能为空,请重新输入!");
        }
    } while (StringUtils.isBlank(input));
    return input;
}

这样addUser方法会极度简洁:

public void addUser() {
    Users user = new Users();
    user.setName(getValidInput("Enter your name"));
    user.setPassword(getValidInput("Enter a password"));
    // 其他字段直接调用getValidInput获取
    yourLinkedList.add(user);
}

这种方式连循环判断都省了,还能给用户错误提示,体验更好。

3. 批量检查多个字段(如果需要一次性验证)

如果已经收集了所有字段值,想一次性检查是否有空值,可以用Stream:

// 假设已经收集了name、password、email等字段
String name = ...;
String password = ...;
String email = ...;

boolean hasBlankField = Stream.of(name, password, email)
                              .anyMatch(StringUtils::isBlank);
if (hasBlankField) {
    // 处理错误
} else {
    // 添加用户
}

内容的提问来源于stack exchange,提问作者Binjie Liang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:45:31