当前位置: 首页 > 知识库问答 >
问题:

查找ArrayList中所有整数的平均值

桓信鸥
2023-03-14

希望这对你来说是有意义的,我很乐意更详细地解释这个问题。

import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Font;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.SwingConstants;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Application {
    private JFrame frame;
    private JTextField pst;
    private JTextField pg;
    private JTextField sg;
    private JTextField pf;
    private JTextField C;
    private JTextField sf;
    private JTextField txtPlayerName;
    private JTextField ED;
    private JTextField CJ;
    private JTextField SB;
    private JTextField SW;
    private JTextField JO;
    private JTextField num;
    private JTextField edNum;
    private JTextField cjNum;
    private JTextField sbNum;
    private JTextField swNum;
    private JTextField joNum;
    private JTextField ppg;
    private JTextField ppgED;
    private JTextField ppgCJ;
    private JTextField ppgSB;
    private JTextField ppgJO;
    private JTextField ppgSW;
    private JButton btnPlay;
    private List<Integer> ppgList;
    private int sum;
    private int counter;

    // Launch the application.
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Application window = new Application();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the application.
     */
    public Application() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        initComponenets();
        createEvents();
    }

    ////////////////////////////////////////////////////////////////////////
    //Contains all of the code for creating events
    private void createEvents() {

    }
    //Contains all of the code for creating and initializing components
    private void initComponenets() {

        ////////////////////////////////////////////////////////////Frame
        frame = new JFrame();
        frame.setTitle("Title");
        frame.setBounds(100, 100, 801, 450);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        ////////////////////////////////////////////////////////////Title
        JTextPane title = new JTextPane();
        title.setBackground(Color.LIGHT_GRAY);
        title.setEditable(false);
        title.setFont(new Font("Tahoma", Font.PLAIN, 20));
        title.setForeground(Color.DARK_GRAY);
        title.setBounds(237, 11, 296, 50);
        title.setText("   Basketball Simulation Game");
        frame.getContentPane().add(title);

    /////////////////////////////////////////////////////////// Position TextBox
        pst = new JTextField();
        pst.setHorizontalAlignment(SwingConstants.CENTER);
        pst.setEditable(false);
        pst.setFont(new Font("Tahoma", Font.BOLD, 14));
        pst.setText("PST");
        pst.setBounds(10, 64, 50, 35);
        frame.getContentPane().add(pst);
        pst.setColumns(10);

        pg = new JTextField();
        pg.setHorizontalAlignment(SwingConstants.CENTER);
        pg.setText("PG");
        pg.setFont(new Font("Tahoma", Font.BOLD, 14));
        pg.setEditable(false);
        pg.setColumns(10);
        pg.setBounds(10, 99, 50, 50);
        frame.getContentPane().add(pg);

        sg = new JTextField();
        sg.setHorizontalAlignment(SwingConstants.CENTER);
        sg.setText("SG");
        sg.setFont(new Font("Tahoma", Font.BOLD, 14));
        sg.setEditable(false);
        sg.setColumns(10);
        sg.setBounds(10, 148, 50, 50);
        frame.getContentPane().add(sg);

        sf = new JTextField();
        sf.setText("SF");
        sf.setHorizontalAlignment(SwingConstants.CENTER);
        sf.setFont(new Font("Tahoma", Font.BOLD, 14));
        sf.setEditable(false);
        sf.setColumns(10);
        sf.setBounds(10, 196, 50, 50);
        frame.getContentPane().add(sf);

        pf = new JTextField();
        pf.setText("PF");
        pf.setHorizontalAlignment(SwingConstants.CENTER);
        pf.setFont(new Font("Tahoma", Font.BOLD, 14));
        pf.setEditable(false);
        pf.setColumns(10);
        pf.setBounds(10, 242, 50, 50);
        frame.getContentPane().add(pf);

        C = new JTextField();
        C.setText("C");
        C.setHorizontalAlignment(SwingConstants.CENTER);
        C.setFont(new Font("Tahoma", Font.BOLD, 14));
        C.setEditable(false);
        C.setColumns(10);
        C.setBounds(10, 291, 50, 50);
        frame.getContentPane().add(C);


        /////////////////////////////////////////////// PlayerName
        txtPlayerName = new JTextField();
        txtPlayerName.setText("Player Name");
        txtPlayerName.setHorizontalAlignment(SwingConstants.CENTER);
        txtPlayerName.setFont(new Font("Tahoma", Font.BOLD, 14));
        txtPlayerName.setEditable(false);
        txtPlayerName.setColumns(10);
        txtPlayerName.setBounds(59, 64, 95, 35);
        frame.getContentPane().add(txtPlayerName);

        ED = new JTextField();
        ED.setText("ED");
        ED.setHorizontalAlignment(SwingConstants.CENTER);
        ED.setFont(new Font("Tahoma", Font.BOLD, 14));
        ED.setEditable(false);
        ED.setColumns(10);
        ED.setBounds(59, 99, 95, 50);
        frame.getContentPane().add(ED);

        CJ = new JTextField();
        CJ.setText("CJ");
        CJ.setHorizontalAlignment(SwingConstants.CENTER);
        CJ.setFont(new Font("Tahoma", Font.BOLD, 14));
        CJ.setEditable(false);
        CJ.setColumns(10);
        CJ.setBounds(59, 148, 95, 50);
        frame.getContentPane().add(CJ);

        SB = new JTextField();
        SB.setText("SB");
        SB.setHorizontalAlignment(SwingConstants.CENTER);
        SB.setFont(new Font("Tahoma", Font.BOLD, 14));
        SB.setEditable(false);
        SB.setColumns(10);
        SB.setBounds(59, 196, 95, 50);
        frame.getContentPane().add(SB);

        SW = new JTextField();
        SW.setText("Swanigan");
        SW.setHorizontalAlignment(SwingConstants.CENTER);
        SW.setFont(new Font("Tahoma", Font.BOLD, 14));
        SW.setEditable(false);
        SW.setColumns(10);
        SW.setBounds(59, 245, 95, 47);
        frame.getContentPane().add(SW);

        JO = new JTextField();
        JO.setText("Jordan");
        JO.setHorizontalAlignment(SwingConstants.CENTER);
        JO.setFont(new Font("Tahoma", Font.BOLD, 14));
        JO.setEditable(false);
        JO.setColumns(10);
        JO.setBounds(59, 291, 95, 50);
        frame.getContentPane().add(JO);

        /////////////////////////////////////////////Numbers
        num = new JTextField();
        num.setText("#");
        num.setHorizontalAlignment(SwingConstants.CENTER);
        num.setFont(new Font("Tahoma", Font.BOLD, 14));
        num.setEditable(false);
        num.setColumns(10);
        num.setBounds(153, 64, 50, 35);
        frame.getContentPane().add(num);

        edNum = new JTextField();
        edNum.setText("0");
        edNum.setHorizontalAlignment(SwingConstants.CENTER);
        edNum.setFont(new Font("Tahoma", Font.BOLD, 14));
        edNum.setEditable(false);
        edNum.setColumns(10);
        edNum.setBounds(153, 99, 50, 50);
        frame.getContentPane().add(edNum);

        cjNum = new JTextField();
        cjNum.setText("3");
        cjNum.setHorizontalAlignment(SwingConstants.CENTER);
        cjNum.setFont(new Font("Tahoma", Font.BOLD, 14));
        cjNum.setEditable(false);
        cjNum.setColumns(10);
        cjNum.setBounds(153, 148, 50, 50);
        frame.getContentPane().add(cjNum);

        sbNum = new JTextField();
        sbNum.setText("24");
        sbNum.setHorizontalAlignment(SwingConstants.CENTER);
        sbNum.setFont(new Font("Tahoma", Font.BOLD, 14));
        sbNum.setEditable(false);
        sbNum.setColumns(10);
        sbNum.setBounds(153, 196, 50, 50);
        frame.getContentPane().add(sbNum);

        swNum = new JTextField();
        swNum.setText("8");
        swNum.setHorizontalAlignment(SwingConstants.CENTER);
        swNum.setFont(new Font("Tahoma", Font.BOLD, 14));
        swNum.setEditable(false);
        swNum.setColumns(10);
        swNum.setBounds(153, 245, 50, 47);
        frame.getContentPane().add(swNum);

        joNum = new JTextField();
        joNum.setText("23");
        joNum.setHorizontalAlignment(SwingConstants.CENTER);
        joNum.setFont(new Font("Tahoma", Font.BOLD, 14));
        joNum.setEditable(false);
        joNum.setColumns(10);
        joNum.setBounds(153, 291, 50, 50);
        frame.getContentPane().add(joNum);

        //////////////////////////////////Points per game
        ppg = new JTextField();
        ppg.setText("PPG");
        ppg.setHorizontalAlignment(SwingConstants.CENTER);
        ppg.setFont(new Font("Tahoma", Font.BOLD, 14));
        ppg.setEditable(false);
        ppg.setColumns(10);
        ppg.setBounds(201, 64, 50, 35);
        frame.getContentPane().add(ppg);

        ppgED = new JTextField();
        ppgED.setText("0.0");
        ppgED.setHorizontalAlignment(SwingConstants.CENTER);
        ppgED.setFont(new Font("Tahoma", Font.BOLD, 14));
        ppgED.setEditable(false);
        ppgED.setColumns(10);
        ppgED.setBounds(201, 99, 50, 50);
        frame.getContentPane().add(ppgED);

        ppgCJ = new JTextField();
        ppgCJ.setText("0.0");
        ppgCJ.setHorizontalAlignment(SwingConstants.CENTER);
        ppgCJ.setFont(new Font("Tahoma", Font.BOLD, 14));
        ppgCJ.setEditable(false);
        ppgCJ.setColumns(10);
        ppgCJ.setBounds(201, 148, 50, 50);
        frame.getContentPane().add(ppgCJ);

        ppgSB = new JTextField();
        ppgSB.setText("0.0");
        ppgSB.setHorizontalAlignment(SwingConstants.CENTER);
        ppgSB.setFont(new Font("Tahoma", Font.BOLD, 14));
        ppgSB.setEditable(false);
        ppgSB.setColumns(10);
        ppgSB.setBounds(201, 196, 50, 50);
        frame.getContentPane().add(ppgSB);

        ppgJO = new JTextField();
        ppgJO.setText("0.0");
        ppgJO.setHorizontalAlignment(SwingConstants.CENTER);
        ppgJO.setFont(new Font("Tahoma", Font.BOLD, 14));
        ppgJO.setEditable(false);
        ppgJO.setColumns(10);
        ppgJO.setBounds(201, 291, 50, 50);
        frame.getContentPane().add(ppgJO);

        ppgSW = new JTextField();
        ppgSW.setText("0.0");
        ppgSW.setHorizontalAlignment(SwingConstants.CENTER);
        ppgSW.setFont(new Font("Tahoma", Font.BOLD, 14));
        ppgSW.setEditable(false);
        ppgSW.setColumns(10);
        ppgSW.setBounds(201, 245, 50, 47);
        frame.getContentPane().add(ppgSW);

        ////////////////////////////////////////Play JButton
        btnPlay = new JButton("PLAY");
        btnPlay.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                getPPG(33, ppgED);
            }
        });
        btnPlay.setFont(new Font("Tahoma", Font.PLAIN, 24));
        btnPlay.setBounds(304, 344, 160, 56);
        frame.getContentPane().add(btnPlay);




    }

    public void getPPG(int num, JTextField box){

        Random rand = new Random();
        String text;
        ppgList = new ArrayList<Integer>();

        for(int xy = 0; xy < 1; xy++){

            num = num + rand.nextInt(10);
            ppgList.add(num);

        }

        for(int i = 0; i < ppgList.size(); i++)
        {
            counter++;
            sum = sum + ppgList.get(i) / counter;
        }
        Integer.toString(sum);
        text = String.valueOf(sum);
        box.setText(text);
    }
}

共有1个答案

姜聪
2023-03-14

当前的方法添加了一个除以当前计数器的项,这是不正确的。看看下面的例子:

values:      1, 2, 3, 4, 5
average:     3

your result:   1/1 + 2/2 + 3/3 + 4/4 + 5/5
             = 1 + 1 + 1 + 1 + 1
             = 5

正确的方法首先计算所有值的总和,然后除以项目的数量。

correct:  (1 + 2 + 3 + 4 + 5) / 5
         = 15 / 5
         = 3

或者,您可以应用除法和加法的分配性质,得到等价的表达式:

1/5 + 2/5 + 3/5 + 4/5 + 5/5
// Setup the list
Random rnd = new Random();
int amount = 1_000;
int valueUpperBound = 10;

ArrayList<Integer> values = new ArrayList<>();
for(int i = 0; i < amount; i++){
    values.add(rnd.nextInt(valueUpperBound));
}

// Compute the average
double avg = values.stream()
    .mapToInt(Integer::intValue)
    .average()
    .getAsDouble();
private double calculateAverage(List<Integer> values) {
    Integer sum = 0;
    if(!values.isEmpty()) {
        for (Integer value : values) {
            sum += value;
        }
        return sum.doubleValue() / values.size();
    }
    return sum;
}
 类似资料:
  • 我正在尝试使用用户输入将数字放入一个数组,然后找到这些数字的平均值,也找到哪些数字大于平均值。这些数字进入一个数组,但当我试图求平均数时,我无法求出平均数,以及哪些数字大于平均数,因为对于试图求出大于平均数的数字的部分,并非所有变量都是可见的。但是,当我允许这个部分看到所有的变量(don't But{}围绕某些部分)时,它会找到每一个数的平均值。现在,它为每个数字打印平均值,而为大于平均值的数字打

  • 正如标题所述,我一直在寻找创建一个程序,将循环在一个文本/输入文件(的数字),然后继续寻找平均奇数和偶数出现在该文件中。 我目前已经成功地创建了如下图所示的结果,能够找到奇数的平均值。然而,我似乎不明白如何能够得到偶数的平均值。 我试着关闭扫描仪,打开另一个扫描仪,再做一段时间,如果else像下面这样循环,并且几乎尝试了相反的方法,那么其他尝试获得偶数平均值的尝试结果是输出为NaN、0或有时停留在

  • 问题内容: 我必须在Python中找到列表的平均值。到目前为止,这是我的代码 我已经知道了,所以它可以将列表中的值相加,但是我不知道如何将其划分为它们? 问题答案: 在Python 3.4+上,你可以使用 statistics.mean() 在旧版本的Python上,你可以执行 在Python 2上,你需要转换len为浮点数才能进行浮点数除法 无需使用。它慢得多,并已在Python 3 中删除。

  • 我一直在寻找,没有找到一个简单的问题和答案堆栈溢出寻找一个数组的平均值。 这是我的阵列 我最初以为这个问题的答案是这样的: 然而,这给了我一个NaN的输出。 然后我尝试了这个: 这给了我68的输出。(我不知道为什么)。 所以我有两个问题。1。为什么我的输出是68?和2。有人能帮我找到数组的平均值吗?

  • 问题内容: 我有一个大小为N *M的矩阵,我想找到每一行的平均值。值是从1到5,并且没有任何值的条目设置为0。但是,当我想使用以下方法查找均值时,它给了我错误的均值,因为它还计算了具有值的条目0。 如何获得仅非零值的均值? 问题答案: 获取每一行的非零计数,并将其用于平均每一行的总和。因此,实现看起来像这样- 如果您使用的是较旧版本的NumPy,则可以使用count的float转换来替换,例如,

  • 我有3个非常大的有符号整数。 我想计算它们的截断平均值。预期平均值是,即。 不可能计算为: 注:我读了所有关于2个数字的平均值的问题,但我不知道该技术如何应用于3个数字的平均值。 使用BigInteger将非常容易,但假设我不能使用它。 如果我转换为双精度,那么,当然,我会失去精度: 如果我转换为,它可以工作,但也让我们假设我不能使用它。 问题:有没有一种方法可以仅使用长类型来计算3个非常大整数的