rendered paste bodyimport java.io.*;import java.util.*;import cs1.Keyboard;public class Stats{ private double[] grades; private final int DEFAULTSIZE=10; private int count; private int avg; private double stddev; private double mean; private boolean avgcurrent=false; Random r = new Random(); public int appearances = 0; public int mode; private int[] modes; public Stats() { this.grades = new double[DEFAULTSIZE]; } public void calcAverage() { int sum=0; //int i=0; //while (i<count) //{ // sum= sum + (int)grades[i]; // i++; //} int i; for (i=0;i<count;i++) { sum=sum+(int)grades[i]; } mean = (double)sum/(double)count; avgcurrent=true; } public double getAverage() { // avgcurrent==false if (!avgcurrent) //if not avgcurrent calcAverage(); return mean; } private void calcStddev() { double sum=0; if (!avgcurrent) this.calcAverage(); int i=0; while (i<count) { sum = sum + (mean-grades[i])*(mean-grades[i]); i++; } sum = sum / count; stddev=Math.sqrt(sum); } public double getStddev() { return stddev; } private void growArray() { double[] tmp = new double[grades.length*2]; int i=0; while (i<count) { tmp[i]=grades[i]; i++; } grades=tmp; } public void readGradesFromKeyboard() { double grade; System.out.print("Please enter a grade (negative to end):"); grade = Keyboard.readDouble(); while (grade >=0) { if (count == grades.length) growArray(); grades[count]=grade; count++; System.out.print("Please enter a grade (negative to end):"); grade = Keyboard.readDouble(); } avgcurrent=false; } private void printBar(int low, int high) { for (int i=0;i<count;i++) { if (grades[i]>=low && grades[i]<high) System.out.print('*'); } System.out.println(); } public void printHist() { int j; for (int i=0;i<10;i++) { j=i*10; System.out.print(j+" - " +(j+10)+":"); printBar(j,j+10); } } private String getBar(int l) { String s = ""; for (int i=0;i<l;i++) s=s+"*"; s=s+'\n'; return s; } public String getHist() { String s=""; int[] tallies = new int[10]; for (int i=0;i<count;i++) { tallies[ (int)(grades[i]/10) ] = tallies[ (int)(grades[i]/10) ] + 1; } for (int i=0;i<10;i++) { s = s + ""+(i*10)+" - "+" "+(i*10+10)+":"; s=s+getBar(tallies[i]); } return s; } public Stats(int size) { this.grades = new double[size]; for (int i=0;i<10;i++) { grades[i] = r.nextInt(101); } } private int[] sortGrades() { int[] gradesSorter = new int[101]; for(int i=0;i<grades.length;i++) gradesSorter[(int)grades[i]]++; return gradesSorter; } public void calcMode() { int[] gradesSorter = sortGrades(); //System.out.println(gradesSorter[90]); //System.out.println(gradesSorter[100]); for(int i=0;i<gradesSorter.length;i++) { if(gradesSorter[i] > appearances) appearances = gradesSorter[i]; } System.out.println(appearances);// always prints out something messed up } private void growArray2() { int[] tmp = new int[modes.length+1]; for(int i=0;i<modes.length;i++) { tmp[i]=modes[i]; } modes=tmp; } public void calcModes() { int[] gradesSorter = sortGrades(); modes = new int[1]; int x = 0; for(int i = 0; i<gradesSorter.length; i++) { if(gradesSorter[i] == appearances) { if (x >= modes.length) { growArray2(); } modes[x] = i; x++; } } } public String getModes() { String s = new String(); for(int i = 0; i<modes.length; i++) { s = s + "," +modes[i]; } return s; }}