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

Java getText().trim().equals(null)空值判断条件不执行问题

故障原因
  • 空判断逻辑从根上写错了:Swing的JTextField文本框在无任何输入时,getText()返回的永远是空字符串"",不会返回null;即使用户只输入了空格,经过trim()处理后得到的也是空字符串,同样不是null。
  • 对任何非null的对象调用equals(null),返回值永远是false,所以你写的!Window.x.getText().trim().equals(null)判断永远成立,不管输入框有没有填内容都会直接进入条件1分支,尝试把空字符串转为整数,最终抛出数字格式异常。你写的条件2分支永远不可能被触发。
  • 额外提醒:就算真要判断对象是否为null,也应该用obj == null的写法,不要用obj.equals(null)——如果obj本身是null,调用equals方法会直接抛出空指针异常。
  • 你的报错信息里已经明确写了For input string: "",就是转整数时拿到了空字符串,和上面的逻辑完全对应。
修正后的实现代码
// 提前取出去除首尾空格的输入值,避免重复调用方法
String xInput = Window.x.getText().trim();
String yInput = Window.y.getText().trim();

// 输入都不为空时走解析逻辑
if (!xInput.isEmpty() && !yInput.isEmpty()) {
    try {
        x = Integer.parseInt(xInput);
        System.out.println("X - OK");
        y = Integer.parseInt(yInput);
        System.out.println("Y - OK");
    } catch (NumberFormatException e) {
        // 兜底处理用户输入非数字内容的场景
        JOptionPane.showMessageDialog(null, "坐标值必须为有效整数", "ERROR", JOptionPane.ERROR_MESSAGE);
        return;
    }
// 任意输入为空时走错误提示
} else {
    JOptionPane.showMessageDialog(null, "Please specify cursor coordinates(X, Y)", "ERROR", JOptionPane.ERROR_MESSAGE);
    return;
}

修正说明:用字符串的isEmpty()方法判断空内容才是符合Swing文本框返回值逻辑的写法,额外增加的数字格式异常捕获,可以避免用户输入字母、符号等非整数内容时程序直接崩溃,鲁棒性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:06:25