首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个jtextfield中的jtextfield的求和值

一个jtextfield中的jtextfield的求和值
EN

Stack Overflow用户
提问于 2016-10-03 03:30:34
回答 1查看 384关注 0票数 0

我想要找出jtextfield的和(sht1到sht13),并将结果放入llog jtextfield中,但如果我不在每个jtextfield中都放值(sht1到sht13),这将不起作用。我如何修复我的代码,使其只接受我选择的jtextfield的值

代码语言:javascript
复制
private void llogMouseClicked(java.awt.event.MouseEvent evt) {                                  
      try{
      int sht1 = Integer.parseInt(vl1.getText());
      int sht2 = Integer.parseInt(vl2.getText());
      int sht3 = Integer.parseInt(vl3.getText());
      int sht4 = Integer.parseInt(vl4.getText());
      int sht5 = Integer.parseInt(vl5.getText());
      int sht6 = Integer.parseInt(vl6.getText());
      int sht7 = Integer.parseInt(vl7.getText());
      int sht8 = Integer.parseInt(vl8.getText());
      int sht9 = Integer.parseInt(vl9.getText());
      int sht10 = Integer.parseInt(vl10.getText());
      int sht11 = Integer.parseInt(vl11.getText());
      int sht12 = Integer.parseInt(vl12.getText());
      int sht13 = Integer.parseInt(vl13.getText());
 if (vl1.getText()==null||vl2.getText()==null||vl3.getText()==null||vl4.getText()==null||vl5.getText()==null||vl6.getText()==null||vl7.getText()==null||vl8.getText()==null||vl9.getText()==null||vl10.getText()==null||vl11.getText()==null||vl12.getText()==null||vl13.getText()==null){
    sht1=0;
    sht2=0;
    sht3=0;
    sht4=0;
    sht5=0;
    sht6=0;
    sht7=0;
    sht8=0;
    sht9=0;
    sht10=0;
    sht11=0;
    sht12=0;
    sht13=0;
    int sum= sht1 + sht2 + sht3 + sht4 + sht5 + sht6 + sht7 + sht8 + sht9 + sht10 + sht11 + sht12 + sht13;
  llog.setText(""+ sum);}
EN

回答 1

Stack Overflow用户

发布于 2016-10-03 03:37:20

建议:

在上面的代码中,使用ArrayList<JTextField>

  • In循环来遍历这个列表。

  • 在循环中,解析字段。如果解析失败,请忽略NumberFormatException --但最重要的是,不要尝试将任何结果(这没有意义)添加到您的sum中。换句话说,将解析后的值添加到try块内的sum中,并将catch块保留为空(少数几次这样做可能是可以的)。

例如,

代码语言:javascript
复制
// note that likely you should be using an ActionListener not a MouseListener
private void myButtonActionPerformed(java.awt.event.ActionEvent e) {
    int sum = 0;
    // assuming a JTextField ArrayList<JTextField> called vFieldList
    for (JTextField  vField : vFieldList) {
        String text = vField.getText().trim();  // get text and trim out all outside whitespace
        try {
            int value = Integer.parseInt(text);

            // if exception thrown, this line won't be reached
            sum += value;  // add value to sum
        } catch (NumberFormatException nfe) {
            // ignore exception
        }
    }

    llog.setText("" + sum);
}

您是否看到通过使用列表和for循环,这将如何简化代码,使其更易于调试或增强?

更好的是:

  • 根本不使用JTextFields,而是捆绑初始化为0的JSpinners。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39820820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档