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
相关产品推荐
相关产品推荐

