2005 Average

<< 2005Tickets | APQuestionsTrailIndex | MazeBug >>

Oh My it looks like i lost all the stuff we typed! Here is a reconstruction


public class StudentRecord
{
        private int[] scores;

        private double average(int first, int last)
        {
               //part a
              double total=0.0;
              for (int i=first; i<=last;i++)
                            total+=scores[i];
               return total/(last-first+1);
         }

        private boolean hasImproved()
        {
             //part b
             int index=1;
             while (index<scores.length) {
                   if (scores[index]<scores[index-1]) return false;
                   index++;
             }
             return true;
        }
        public double finalAverage()
        {
            //part c  
              if (hasImproved() )
                  return average (scores.length/2, scores.length-1);
              return average(0,scores.length-1);
         }

 }



Driver to test it out:

public class AverageTester{

    public static void main (String[] args)
    {
     //I made 3 integer arrays in  three different ways!
     int[] a1={50, 50, 20, 80, 53};
     StudentRecord s1=new StudentRecord(a1);

     int a2[]={20, 50, 50, 53, 80};
     StudentRecord s2=new StudentRecord(a2);
     int[] a3=new int[4];
     a3[0]=20;
     a3[1]=a3[2]=50;
     a3[3]=80;
     StudentRecord s3=new StudentRecord(a3);

     System.out.println("s1 improved? (should be false):"+ s1.hasImproved());
     System.out.println("s2 improved? (should be true):"+ s2.hasImproved());
     System.out.println("s3 improved? (should be true):"+ s3.hasImproved());

     System.out.println("s1 average? (should be 50.6):"+ s1.finalAverage());
     System.out.println("s2 average? (should be 61.6):"+ s2.finalAverage());
     System.out.println("s3 average? (should be 65.0):"+ s3.finalAverage());
    }

}