// The output method outputs percentages as well as frequency counts.
// The class also has a method that finds the most popular drink.
// Barry Cornelius, 19 June 2000
import java.io. BufferedReader;
import java.io. IOException;
public class VendingMachine
{
   private BufferedReader iKeyboard;
   private int iNumberOfDrinks;
   private int[] iFrequencyCounts;
   public VendingMachine(final BufferedReader pKeyboard,
                         final int pNumberOfDrinks)
   {
      iKeyboard = pKeyboard;
      iNumberOfDrinks = pNumberOfDrinks;
   }
   public void setFrequencyCountsToZero()
   {
      iFrequencyCounts = new int[iNumberOfDrinks + 1];
      for (int tDrinkNumber = 1; tDrinkNumber<=iNumberOfDrinks;
                                 tDrinkNumber++)
      {
         iFrequencyCounts[tDrinkNumber] = 0;
      }
   }
   public void readInSelectionsAndUpdateFrequencyCounts()
                                                 throws IOException
   {
      while (true)
      {
         final String tLine = iKeyboard.readLine();
         if (tLine.equals(""))
         {
            break;
         }
         final int tDrinkSelection = Integer.parseInt(tLine);
         if (tDrinkSelection<1 || tDrinkSelection>iNumberOfDrinks)
         {
            System.out.println("The value is out of range");
            System.exit(1);
         }
         // tDrinkSelection>=1 && tDrinkSelection<=iNumberOfDrinks
         iFrequencyCounts[tDrinkSelection] += 1;
      }
   }
   public void outputFrequencyCountsAndPercentages()
   {
      int tNumberOfSelections = 0;
      for (int tDrinkNumber = 1; tDrinkNumber<=iNumberOfDrinks;
                                 tDrinkNumber++)
      {
         tNumberOfSelections += iFrequencyCounts[tDrinkNumber];
      }
      for (int tDrinkNumber = 1; tDrinkNumber<=iNumberOfDrinks;
                                 tDrinkNumber++)
      {
         final int tFrequencyCount = iFrequencyCounts[tDrinkNumber];
         final int tPercentage = 100*tFrequencyCount/tNumberOfSelections;
         System.out.println(tDrinkNumber + " " +
                            tFrequencyCount + " " + tPercentage);
      }
   } //BJCHEREFIRST
   public void outputTheMostPopularDrink()
   {
      int tMostPopularDrinkNumber = 1;
      for (int tDrinkNumber = 2; tDrinkNumber<=iNumberOfDrinks;
                                 tDrinkNumber++)
      {
         if (iFrequencyCounts[tDrinkNumber] >
                                iFrequencyCounts[tMostPopularDrinkNumber])
         {
            tMostPopularDrinkNumber = tDrinkNumber;
         }
      }
      System.out.println("The most popular drink is drink number " +
                         tMostPopularDrinkNumber);
   }
}
