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

Java中if else判断失效求助:如何正确编写空值判断逻辑

修正空值判断逻辑的方案

首先,你的代码里有两个关键问题导致空值判断失效,咱们一步步来解决:

1. 直接调用toString()会触发空指针异常

你的代码里直接写了:

String id= table_1.getModel().getValueAt(row, column).toString();

如果表格单元格的原始值是null,调用toString()会直接抛出NullPointerException,程序根本走不到后续的if (id==null)判断。所以得先获取原始对象,再安全地转为字符串。

2. 空值判断要覆盖「null」和「空字符串」两种情况

就算单元格内容是空字符串(比如用户没输入内容),id不会是null,而是"",这时候你的if (id==null)也不会生效。

完整修正后的代码示例

Button button_2 = new Button("Delete");
button_2.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        // 先判断是否选中了行,避免getSelectedRow返回-1导致报错
        int row = table_1.getSelectedRow();
        if (row == -1) {
            JOptionPane.showMessageDialog(null, "请先选中要删除的行!");
            return;
        }
        
        int column = 0;
        // 先获取原始值,避免直接toString触发空指针
        Object cellValue = table_1.getModel().getValueAt(row, column);
        String id = null;
        if (cellValue != null) {
            // 转字符串并去除前后空白,避免空格导致的"假空"情况
            id = cellValue.toString().trim();
        }
        
        // 覆盖null和空字符串两种空值场景
        if (id == null || id.isEmpty()) {
            JOptionPane.showMessageDialog(null, "选中行的ID为空,无法执行删除操作!");
            return;
        }
        
        // 这里写正常的删除逻辑
    }
});

额外说明

  • 先判断row != -1:当用户没选中任何行时,getSelectedRow()会返回-1,此时调用getValueAt会抛出数组越界异常,所以必须先做这个判断。
  • 使用trim():可以避免单元格里只有空格、制表符等空白字符的情况,这种场景下虽然不是严格的空值,但通常也不应该执行删除操作。

内容的提问来源于stack exchange,提问作者Klayd Pro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:00:36