2016-10-02 9 views
0

Я хочу найти сумму jtextfields (sht1 to sht13) и поместить результат в llog jtextfield, но он не будет работать, если я не стану значения в каждом поле jtextfield (sht1 to sht13) как я могу исправить мой код так, что он принимает только значения JTextFields, что я выбираю, чтобы положить значения назначения суммы 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

Предложения:

  • Поставь текстовых полей JTextField в 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); 
} 

Видите ли вы, что с помощью списка и для цикла, как это упрощает код, что делает его гораздо проще отлаживать или улучшить?

еще лучше:

  • Не использовать на всех текстовых полей JTextField, а гроздь JSpinners что вы инициализации в 0.

 Смежные вопросы

  • Нет связанных вопросов^_^