Problem with user defined methods
Hello,
I have created a user-defined method using the constructer and a number of sub-methods. The toString method is supposed to return the maximum, minimum, average, and median for an input data set. This program compiles with no problem, but doesn't seem to calculate the statistics. The max, min, med, and mean are all 0. Any help would be appreciated. Thanks a lot.
import java.util.*;
public class SO{
private String id;
private int N;
private double[] data;
private double average;
private double minimum;
private double maximum;
private double med;
public SO(){
}
public void readData(){
Scanner keyBoard = new Scanner(System.in);
System.out.println("Enter the id: ");
id = keyBoard.nextLine();
System.out.println("Enter the amount of data values in the id: ");
N = keyBoard.nextInt();
data = new double[N];
System.out.println("Enter the values one line at a time: ");
int j = 0;
for(int h=0; h<=N-1; h++){
data[h] = keyBoard.nextDouble();
}
Arrays.sort(data);
}
public void setDataValue(int k, double v){
data[k] = v;
System.out.printf("Changing data[%d] to %f", k, v);
}
public double getDataValue(int k){
double get = data[k];
return get;
}
private double mean(){
double sum = 0;
for(int k = 0; k<=N-1; k++){
sum = sum + data[k];
}
average = sum/N;
return average;
}
private double min(){
minimum = data[0];
return minimum;
}
private double max(){
maximum = data[N-1];
return maximum;
}
private double median(){
if(N%2 != 0){
med = data[N/2];
}
else if(N%2 == 0){
med = (data[N/2] + data[N/2-1])/2.;
}
return med;
}
public void displayData(){
System.out.printf("[");
for(int k = 0; k<=N-1; k++){
System.out.printf("%.2f", data[k]);
if(k != N-1){
System.out.printf(", ");
}
}
System.out.printf("]");
}
public void sortData(){
Arrays.sort(data);
System.out.printf("[");
for(int k = 0; k<=N-1; k++){
System.out.printf("%.2f", data[k]);
if(k != N-1){
System.out.printf(", ");
}
}
System.out.printf("]");
}
public void analyzeData(){
System.out.println(this);
}
public String toString(){
return id +"\n" + "minimum = " + minimum + "\n" + "maximum = " + maximum + "\n" + "median = " + med + "\n" + "mean = " + average;
}
public static void main(String[] args){
SO v = new SO();
System.out.println("Read Data");
v.readData();
System.out.println("Display Data");
v.displayData();
System.out.println("Analyze Data");
v.analyzeData();
System.out.println("Set Data\n");
v.setDataValue(0,98.75);
v.displayData();
System.out.println("Sort Data");
v.sortData();
System.out.println("Access Data\n");
System.out.println("data[0] = " + v.getDataValue(0));
System.out.println("\nDisplay v");
System.out.println(v);
}
}

