【问题标题】:Java swing - list.add issuesJava swing - list.add 问题
【发布时间】:2016-01-14 20:29:54
【问题描述】:

我正在创建一个用于评判体育赛事的 GUI。有 6 名评委,他们每个人都将自己的分数输入到 GUI 中。然后他们点击计算,该程序旨在将数字从低到高排序,然后从位置 1 到 4 取数字并给出平均值。

我已经编写了通过控制台输入的代码并且可以正常工作,但是当我尝试使用我的 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;

        }

【问题讨论】:

  • “不想工作”,它说什么!显示错误详情。
  • 对不起,下次我会记住的。现在全部排序

标签: java swing arraylist


【解决方案1】:

此代码无法编译的原因很简单:类型不匹配。 只需拆分这一行:

list.add(textFieldRun1Score1.getText());

up:list.add(...) 需要一个int 作为参数(因为它的模板类型是Integer),textFieldRun1Score1.getText() 返回一个String。因此,您必须首先从String 转换为int。解决这个问题的最常见方法是int value = Integer.parseInt(string);

【讨论】:

    【解决方案2】:
    list.add(textFieldRun1Score1.getText());
    

    不起作用,因为您尝试将 String 添加到 Integers 列表中

    首先将String解析为Integer

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

    编辑(不是对您问题的回答,而是一般性建议):

    而不是做:

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

    只需使用:double best = Math.max(firstRun, secondRun);

    【讨论】:

    • 谢谢!我改变了'双'并且它有效。让它更整洁一些
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 2011-01-09
    • 2016-08-26
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多