2016-10-02 25 views
0

我想查找jtextfields(sht1到sht13)的总和并将结果放入llog jtextfield中,但是如果我不将值放入每个jtextfield(sht1到sht13) 如何解决我的代码,它需要的是我选择把价值上jtextfields在一个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);} 

回答

1

建议JTextFields将只值:

  • 把你JTextFields将进入一个ArrayList<JTextField>
  • 在代码一个bove,使用for循环遍历这个列表。
  • 在循环内部,解析该字段。如果解析失败,请忽略NumberFormatException - 但最重要的是,不要尝试将任何结果(无意义)添加到您的总和中。换句话说,在try块中添加解析值到你的总和中,并将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循环,如何简化了代码,使其更容易调试或提高?

更妙的是:

  • 不要使用JTextField的所有,但你初始化为0
而是一堆JSpinners