【问题标题】:empty JTextField and adding number空 JTextField 并添加数字
【发布时间】:2015-09-07 05:27:15
【问题描述】:

我有三个名为 vol1HH1、vol1HH2、vol1HH3 和 fvol 的 JTextfield。其结果在 actionPerformed 事件之后输出。

用户可能只是在 vol1HH1 和 vol1HH2 中输入了一个数字,而不是 vol1HH3,我如何确保将两个数字相加并将结果显示到 fvol 中而不会导致空的 JTextField vol1HH3 出现数字处理错误?

public void actionPerformed(ActionEvent e) {
double number1 = Double.parseDouble(vol1HH1.getText());
double number2 = Double.parseDouble(vol1HH2.getText());
double number3 = Double.parseDouble(vol1HH3.getText());

fvol.setText(Double.toString(number1 + number2 + number3));
}

我试过了,但这似乎不起作用,我做错了什么?

double sum = 0;

if (!vol1HH1.getText().trim().isEmpty()||!vol1HH2.getText().trim().isEmpty()){
   // only now parse the text and add it
   sum += Double.parseDouble(vol1HH1.getText());
   sum += Double.parseDouble(vol1HH2.getText());
}


fvol.setText(Double.toString(sum));

【问题讨论】:

  • 请澄清,"but this doesn't seem to work"
  • 还要在纸上演练你的程序逻辑。 || 和 NOT 运算符等逻辑问题应该可以在没有我们帮助的情况下由您解决。我有信心你能解决这个问题。
  • 考虑使用JSpinnerJFormattedField 可以执行自己的验证。请参阅How to Use SpinnersHow to Use Formatted Text Fields 了解更多详情

标签: java swing error-handling


【解决方案1】:
  1. 确保只能将数字添加到您的 JTextField 中——添加到 JTextField 的 Document 中的 DocumentFilter 可以很好地解决这个问题。有关更多信息,请参阅my answer to a similar question
  2. 测试 JTextField 是否为空尝试使用简单的 if 块解析它之前:

if (!myTextField.getText().trim().isEmpty()) {
   // only now parse the text and add it
   sum += Double.parseDouble(myTextField.getText());
}

【讨论】:

  • @MrAssistance:哎呀我的眼睛。请避免尝试在 cmets 中发布代码,除非您发布的是单行代码的片段。相反,如果您需要向我们提供更多代码以供审核,请编辑您的原始问题并将任何新代码添加到问题的底部。关于"would something like this work?",最好的方法是尝试一下看看。
  • @MrAssistance:您的布尔逻辑已关闭。再一次,把逻辑写在纸上,在你的脑海中逐一分析,你就会弄明白的。
【解决方案2】:

为了避免将空字符串传递给Double.parseDouble() 方法,为什么不使用条件运算符?

可能是这样的 double number3 = Double.parseDouble(vol1HH3.getText().equals("") ? "0" : vol1HH3.getText()); 会帮助你解决我猜的问题。

只要字段为空,vol1HH3.getText() 就会返回一个空字符串,此时传递一个 0 即可完成工作,并且不会影响您的总金额。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 2010-10-07
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多