All pastes #732727 Raw Edit

Stuff

public text v1 · immutable
·published 2007-10-11 06:32 UTC
rendered paste body

import 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;
    }
}