// Allows us to use Scanner (which is for user input) import java.util.*; // Don't worry about why we need this. HorseTracker is the name of this program, // which is why we used it here class HorseTracker { public static String[] getHorseData(int horseCount) { // Defines a bucket called sc, of type Scanner, which contains a scanner that we can use to get user input Scanner sc = new Scanner(System.in); String[] horseNames = new String[horseCount]; String horseName; // for loop for (int i = 0; i < horseCount; i++) { System.out.print("Horse Name: "); // this is how we get a string from the user horseName = sc.nextLine(); horseNames[i] = horseName; } return horseNames; } public static int[] getRaceData(int horseCount) { Scanner sc = new Scanner(System.in); int[] horseFinishTimes = new int[horseCount]; int horseFinishTime; for (int i = 0; i < horseCount; i++) { horseFinishTime = 0; while (horseFinishTime == 0) { try { System.out.print("Horse Finish time: "); // this is how we get an integer from the user. In java you don't need to convert string input to integer to get an integer horseFinishTime = sc.nextInt(); horseFinishTimes[i] = horseFinishTime; } catch (InputMismatchException e) { System.out.println("Please enter the horse finish time correctly"); horseFinishTime = 0; } } } return horseFinishTimes; } public static int calcWinner(int[] horseFinishTimes) { int lowestTime = 10000; int finishTime; int horseNumber = 0; int fastestHorseNumber; for (int i = 0; i < horseFinishTimes.length; i++) { finishTime = horseFinishTimes[i]; if (finishTime < lowestTime) { lowestTime = finishTime; horseNumber = i; } } fastestHorseNumber = horseNumber; System.out.println("Fastest horse is " + fastestHorseNumber); return fastestHorseNumber; } public static void displayTimes(String[] horseNames, int[] horseFinishTimes) { for (int i = 0; i < horseNames.length; i++) { System.out.println("Horse with number " + i + " Name: " + horseNames[i] + "Finish time: " + horseFinishTimes[i]); } } public static void findHorseName(int horseNumber, String[] horseNames) { String horseName = horseNames[horseNumber]; System.out.println("Horse with number " + horseNumber + "is " + horseName); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] horseNames; int[] horseFinishTimes; int winningHorseNumber; int horseCount = 0; while (horseCount == 0) { try { System.out.print("Horse count: "); horseCount = sc.nextInt(); } catch (InputMismatchException e) { System.out.println("Please enter the horse count correctly"); horseCount = 0; } } horseNames = getHorseData(horseCount); horseFinishTimes = getRaceData(horseCount); displayTimes(horseNames, horseFinishTimes); winningHorseNumber = calcWinner(horseFinishTimes); findHorseName(winningHorseNumber, horseNames); } }