如何计算阵列的中值? [英] How to calculate the median of an array?

查看:114
本文介绍了如何计算阵列的中值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图计算总,平均和由一个文本框接收的输入填充的数组这就是中位数。我已经成功地制定出总的和平均的,我只是不能位数工作。我认为阵列需要进行排序,我可以做到这一点之前,但我不知道如何做到这一点。这就是问题所在,还是有另外一个,我没有找到?这里是我的code:

 进口java.applet.Applet中;
进口java.awt.Graphics;
进口java.awt中的*。
java.awt.event中导入*。whileloopq扩展Applet的公共类实现的ActionListener
{
    标签标签;
    文本字段输入;
    INT NUM;
    INT指数;
    INT [] numArray =新INT [20];
    INT总和;
    INT总;
    双重魅力;
    INT位;    公共无效的init()
    {
        标签=新标签(输入数字);
        输入=新的TextField(5);
        添加(标签);
        添加(输入);
        input.addActionListener(本);
        索引= 0;
    }    公共无效的actionPerformed(ActionEvent的EV)
    {
        INT NUM =的Integer.parseInt(input.getText());
        numArray [指数] = NUM​​;
        指数++;
        如果(指数== 20)
        input.setEnabled(假);
            input.setText();
        总和= 0;
        的for(int i = 0; I< numArray.length;我++)
        {
            总和+ = numArray [I]
        }
        总= SUM;
        平均=总/指数;        中位数= numArray [numArray.length / 2];        重绘();    }    公共无效漆(图形格拉夫)
    {        graf.drawString(总=+ Integer.toString(总),25,85);
        graf.drawString(平均值=+ Double.toString(平均),25,100);
        graf.drawString(中位数=+ Integer.toString(中位数),25,115);    }
}


解决方案

在Java中Arrays类有一个静态的排序功能,您可以用 Arrays.sort(numArray)调用

  Arrays.sort(numArray);
双位数;
如果(numArray.length%2 == 0)
    中位数=((双)numArray [numArray.length / 2] +(双)numArray [numArray.length / 2 - 1])/ 2;
其他
    中位数=(双)numArray [numArray.length / 2];

I'm trying to calculate the total, mean and median of an array thats populated by input received by a textfield. I've managed to work out the total and the mean, I just can't get the median to work. I think the array needs to be sorted before I can do this, but I'm not sure how to do this. Is this the problem, or is there another one that I didn't find? Here is my code:

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.*;
import java.awt.event.*;

public class whileloopq extends Applet implements ActionListener
{
    Label label;
    TextField input;
    int num;
    int index;
    int[] numArray = new int[20];
    int sum;
    int total;
    double avg;
    int median;



    public void init ()
    {
        label = new Label("Enter numbers");
        input = new TextField(5);
        add(label);
        add(input);
        input.addActionListener(this);
        index = 0;
    }

    public void actionPerformed (ActionEvent ev)
    {
        int num = Integer.parseInt(input.getText());
        numArray[index] = num;
        index++;
        if (index == 20)
        input.setEnabled(false);
            input.setText("");
        sum = 0;
        for (int i = 0; i < numArray.length; i++)
        {
            sum += numArray[i];
        }
        total = sum;
        avg = total / index;

        median = numArray[numArray.length/2];



        repaint();

    }



    public void paint (Graphics graf)
    {



        graf.drawString("Total   = " + Integer.toString(total), 25, 85);
        graf.drawString("Average = " + Double.toString(avg), 25, 100);
        graf.drawString("Median = " + Integer.toString(median), 25, 115);



    }
}

解决方案

The Arrays class in Java has a static sort function, which you can invoke with Arrays.sort(numArray).

Arrays.sort(numArray);
double median;
if (numArray.length % 2 == 0)
    median = ((double)numArray[numArray.length/2] + (double)numArray[numArray.length/2 - 1])/2;
else
    median = (double) numArray[numArray.length/2];

这篇关于如何计算阵列的中值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆