import java.io.PrintStream; import java.util.Collection; import java.util.Scanner; import java.util.Map; import java.util.HashMap; import cse1020.sport.*; import type.lib.ToolBox; public class TestD { public static void main(String[] args) { Scanner input = new Scanner(System.in); PrintStream output = System.out; // Part 1: 5 marks // 1 mark for prompt // 1 mark for reading input // 1 mark for throwing an exception // 1 mark for catch // 1 mark for setting n = 1 in catch block output.print("How many sports teams/individuals? "); int n = 0; try { n = input.nextInt(); ToolBox.crash(n < 0, "Negative number of teams/individuals"); } catch (RuntimeException e) { output.println(e.getMessage()); n = 1; } // Part 2: 1 mark for (int i = 0; i < n; i++) { output.print("*"); } output.println(); // Part 3: 1 mark Collection sports = SportFactory.getRandom(n); output.println(sports); output.println(); // Part 4: 5 marks // 1 mark for creating the maps // 1 mark for loop over collection // 1 mark for instanceof TeamSport // 1 mark for putting into team map // 1 mark for putting into individual map Map team = new HashMap(); Map indi = new HashMap(); for (Sport s : sports) { if (s instanceof TeamSport) { Integer num = team.put(s, 1); if (num != null) { team.put(s, num + 1); } } else { Integer num = indi.put(s, 1); if (num != null) { indi.put(s, num + 1); } } } // Part 5: 2 marks // 1 mark for cast // 1 mark for output output.println("Teams: Games Played"); for (Sport s : team.keySet()) { TeamSport t = (TeamSport) s; output.println(s + ", " + t.getRoster() + ", " + team.get(s)); } output.println(); // Part 6: 1 mark output.println("Individuals: Games Played"); output.println(indi); } }