/home/wpollock1/public_html/Java/Judges.java

// Judges.java - a non-GUI Java program to compute the scores of the
// Figure Skating event at the Olympics.  There are five judges, and the
// final score should be the average of the middle three scores.  (Scores
// are integers between 0 and 10.)
//
// The more obvious solution (obvious to some anyway :-) is to read all the
// scores into variables, or an array (or other collection), then find and
// remove the smallest, then find and remove the largest, and finally
// calculate the average of the three remaining scores, by summing them and
// dividing by three.  But, as is often the case with programs, a less obvious
// solution can be shorter and more efficient.  In this case we will read each
// score, and as we go we will track the highest and lowest score as well as
// the sum of all the scores.  After the last score has been read, we can just
// subtract the largest and smallest score from the total, and then divide
// by three.
//
// Special care is needed to initialize the highest and lowest scores found!
//
// Written 3/2006 Wayne Pollock, Tampa Florida USA.  All Rights Reserved.

import java.util.Scanner;

class Judges
{
   public static void main ( String [] args )
   {
      final int MIN_LEGAL_SCORE = 0, MAX_LEGAL_SCORE = 10;
      final int NUM_SCORES = 5;

      int lowScore = MAX_LEGAL_SCORE + 1;
      int highScore = MIN_LEGAL_SCORE - 1;
      int totalScore = 0;

      // Set up input parser:
      Scanner in = new Scanner( System.in );

      System.out.println( "Enter the " + NUM_SCORES + " Judges' scores:\n" );
      for ( int i = 1; i <= NUM_SCORES; ++i )
      {
            System.out.printf( "Enter score %2d: ", i );
            int score = in.nextInt();
            if ( score < MIN_LEGAL_SCORE || score > MAX_LEGAL_SCORE )
            {   System.err.println( "\n\t***Error: Illegal score value, " +
                     "please re-enter!\n" );
                --i;  // Reset attempt4

                continue;
            }

            if ( score < lowScore  )  lowScore  = score;
            if ( score > highScore )  highScore = score;
            totalScore += score;
      }

      // Subtract the low and high scores from the running total:
      totalScore -= (lowScore + highScore);

      // Display score, rounded to one decimal place:
      System.out.printf( "\n\nAnd the Judges' score is:  %.1f\n",
         (totalScore / 3.0) );
   }
}