Will - 6 months ago 64

Java Question

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);

}

}

Answer

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];
```