2015-10-16 58 views
0

我正在创建一个用于判断体育赛事的GUI。有6个评委,他们分别输入他们的分数到GUI中。然后他们点击计算,该程序旨在将数字从低到高排序,然后从位置1到4取数字并给出平均值。Java swing - list.add问题

我已经编写了通过控制台输入的代码,并且工作,但是当我尝试我的Gui时,'list.add'不起作用。我不知道我是否打算使用别的东西。

btnCalculate = new JButton("Calculate"); 
    btnCalculate.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent e) { 
      inGui = new Scanner (System.in); 
      double firstRun = getAverageOfRun(1); 
      double secondRun = getAverageOfRun(2); 
      double best; 

      if (firstRun > secondRun) { 
       best = firstRun; 
      } else { 
       best = secondRun; 
      } 
      textFieldRun1Score.setText(Double.toString(best)); 
      } 
     private double getAverageOfRun (int runNumber) { 
      double total, avg; 
      int num1, num2, num3, num4, num5, num6; 
      List<Integer> list = new ArrayList<Integer>(); 

      num1 = Integer.parseInt(textFieldRun1Score1.getText()); 

      System.out.print(""+runNumber +": "); 
      list.add(textFieldRun1Score1.getText()); 
      list.add(textFieldRun1Score2.getText()); 
      list.add(textFieldRun1Score3.getText()); 
      list.add(textFieldRun1Score4.getText()); 
      list.add(textFieldRun1Score5.getText()); 
      list.add(textFieldRun1Score6.getText()); 

      Collections.sort(list); 

      total = list.get(1) + list.get(2) + list.get(3) + list.get(4); 

      avg = total/4; 

      textFieldBestScore.setText(Double.toString(avg)); 
      return avg; 

     } 
+1

“不想工作“,它说什么!显示错误的详细信息。 –

+0

对不起,下次我会记住的。现在全部整理 – Nobby

回答

1

由于一个简单的原因,此代码不会编译:类型不匹配。 刚刚拆分此行:

list.add(textFieldRun1Score1.getText()); 

起来:list.add(...)期待一个int作为参数(因为它是templatetype是Integer),textFieldRun1Score1.getText()返回String。因此,您必须先将String转换为int。要解决这个问题最常见的方式是int value = Integer.parseInt(string);

+0

非常感谢,现在有用! – Nobby

1
list.add(textFieldRun1Score1.getText()); 

不会起作用,因为你尝试将String增加的Integers

名单解析StringInteger第一:

list.add(Integer.parseInt(textFieldRun1Score1.getText())); 

编辑(不回答你的问题,但一般建议):

而不是做:

double best; 

if (firstRun > secondRun) { 
    best = firstRun; 
} else { 
    best = secondRun; 
} 

简单地使用:double best = Math.max(firstRun, secondRun);

+0

谢谢!我改变了'双',它的作品。使它有点整洁 – Nobby