【问题标题】:sum values of jtextfields in one jtextfields一个 jtextfields 中 jtextfields 的总和值
【发布时间】:2017-02-10 18:16:30
【问题描述】:

我想找到 jtextfields 的总和(sht1 到 sht13)并将结果放在 llog jtextfield 中,但是如果我不在每个 jtextfield(sht1 到 sht13)中输入值,它将不起作用 如何修复我的代码,以便它只需要我选择放置值的 jtextfields 的值

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);}

【问题讨论】:

    标签: java swing numbers jtextfield parseint


    【解决方案1】:

    建议:

    • 将您的 JTextField 放入 ArrayList<JTextField>
    • 在上面的代码中,使用 for 循环遍历这个列表。
    • 在循环内部,解析字段。如果解析失败,请忽略 NumberFormatException - 但最重要的是,不要尝试将任何结果(没有意义)添加到您的总和中。换句话说,将解析后的值添加到 try 块中的 sum,并将 catch 块留空(这样做可能是少数几次之一)。

    例如,

    // 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 的 JSpinner 捆绑在一起。

    【讨论】:

      猜你喜欢
      • 2011-11-20
      • 2017-01-04
      • 1970-01-01
      • 1970-01-01
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 2022-07-26
      • 2017-11-25
      相关资源
      最近更新 更多