// 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); } }