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

