如何计算阵列的中值? [英] How to calculate the median of an array?
本文介绍了如何计算阵列的中值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我试图计算总,平均和由一个文本框接收的输入填充的数组这就是中位数。我已经成功地制定出总的和平均的,我只是不能位数工作。我认为阵列需要进行排序,我可以做到这一点之前,但我不知道如何做到这一点。这就是问题所在,还是有另外一个,我没有找到?这里是我的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屋!
查看全文