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

Java中TextField转double触发空字符串NumberFormatException求助

解决Double.parseDouble空字符串引发的NumberFormatException问题

问题原因

你在cur1按钮的点击逻辑中,过早执行了s=edit.getText();——此时用户刚看到输入框,还没输入任何内容,s被赋值为空字符串。当点击button1触发转换时,空字符串无法被Double.parseDouble()解析,直接抛出NumberFormatException: empty String。

修复后的代码

将获取输入文本的代码移到button1的点击事件中,确保在用户完成输入后再读取内容,同时增加输入验证和异常处理:

public void actionPerformed(ActionEvent e) {
    if(e.getSource() == cur1) {
        cur1.setVisible(false);
        cur2.setVisible(false);
        cur3.setVisible(false);
        label.setText("Enter USD amount");
        edit.setVisible(true);
        edit.setLayout(null);
        button1.setVisible(true);
        button1.setText("next");
        button1.setSize(90,20);
        button1.setBounds(250, 250, 100, 20);
        button1.addActionListener(this);    
        // 移除此处的s=edit.getText();
    }
    
    if(e.getSource() == button1) {
        // 在用户点击next后才获取输入内容,同时去除前后空格
        String input = edit.getText().trim();
        try {
            val = Double.parseDouble(input);
            val = val * 3.55;
            label.setVisible(true);
            label.setText("The value is " + val);
        } catch (NumberFormatException ex) {
            // 处理非有效数字的输入情况
            label.setText("请输入有效的数字");
        }
    }
}

补充优化建议

  • 去除空格:使用trim()过滤输入内容的前后空格,避免用户误输入空格导致的异常。
  • 异常捕获:添加try-catch块处理非数字输入,让程序更健壮,避免崩溃。
  • 输入限制:可以给TextField添加输入过滤器(如DocumentFilter),只允许输入数字和小数点,从源头减少无效输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:31:00