Java swing-list.add问题
我正在创建一个用于体育赛事的GUI。共有6名评委,他们将各自的分数输入GUI。然后点击calculate,该程序将数字从低到高排序,然后从第1位到第4位取数字并给出平均值 我已经编写了通过控制台输入的代码,这很有效,但是当我尝试我的Gui时,“list.add”不起作用。我不知道我是不是要用别的东西Java swing-list.add问题,java,swing,arraylist,Java,Swing,Arraylist,我正在创建一个用于体育赛事的GUI。共有6名评委,他们将各自的分数输入GUI。然后点击calculate,该程序将数字从低到高排序,然后从第1位到第4位取数字并给出平均值 我已经编写了通过控制台输入的代码,这很有效,但是当我尝试我的Gui时,“list.add”不起作用。我不知道我是不是要用别的东西 btnCalculate = new JButton("Calculate"); btnCalculate.addActionListener(new ActionListener(
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;
}
btnCalculate=新的JButton(“计算”);
btnCalculate.addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
inGui=新扫描仪(System.in);
double firstRun=getAverageOfRun(1);
double Second Run=getAverageOfRun(2);
双倍最佳;
如果(第一次运行>第二次运行){
最佳=首次运行;
}否则{
最佳=第二次运行;
}
textFieldRun1Score.setText(Double.toString(最佳));
}
private double getAverageOfRun(int runNumber){
平均双倍总数;
整数num1、num2、num3、num4、num5、num6;
列表=新的ArrayList();
num1=Integer.parseInt(textFieldRun1Score1.getText());
系统输出打印(“+runNumber+”:”);
添加(textFieldRun1Score1.getText());
添加(textFieldRun1Score2.getText());
添加(textFieldRun1Score3.getText());
添加(textFieldRun1Score4.getText());
添加(textFieldRun1Score5.getText());
添加(textFieldRun1Score6.getText());
集合。排序(列表);
总计=列表。获取(1)+列表。获取(2)+列表。获取(3)+列表。获取(4);
平均值=总数/4;
textFieldBestScore.setText(Double.toString(avg));
返回平均值;
}
此代码无法编译,原因很简单:类型不匹配。
把这条线分开:
list.add(textFieldRun1Score1.getText());
up:list.add(…)
需要一个int
作为参数(因为它的模板类型是Integer
),textFieldRun1Score1.getText()
返回一个String
。因此,您必须首先将String
转换为int
。最常用的解决方法是int value=Integer.parseInt(字符串);
无法工作,因为您试图将字符串
添加到整数列表
首先将字符串
解析为整数
:
list.add(Integer.parseInt(textFieldRun1Score1.getText()));
编辑(不是对您问题的回答,而是一般性建议):
而不是做:
double best;
if (firstRun > secondRun) {
best = firstRun;
} else {
best = secondRun;
}
只需使用:
double best=Math.max(firstRun,secondRun);
“不想工作”,上面写着什么!显示错误详细信息。抱歉,我下次会记住。现在全部排序谢谢!我更改了“double”并且它工作了。使它更整洁一些
double best;
if (firstRun > secondRun) {
best = firstRun;
} else {
best = secondRun;
}