/** * HockeyPlayer.java * *

Represents a hockey player and tracks their performance statistics such as goals, assists, and * win/loss records. * * @author Cody Trainer */ public class HockeyPlayer { private String name; private int goals, assists, gamesWon, gamesLost; /** * Constructs a new HockeyPlayer with full statistics. * * @param n The player's name. * @param g Number of goals scored. * @param a Number of assists made. * @param gw Number of games won. * @param gl Number of games lost. */ public HockeyPlayer(String n, int g, int a, int gw, int gl) { name = n; goals = g; assists = a; gamesWon = gw; gamesLost = gl; } /** * Constructs a new HockeyPlayer with a name and zeroed statistics. * * @param name The player's name. */ public HockeyPlayer(String name) { this.name = name; } /** * getName gets the player's name * * @return The player's name. */ public String getName() { return name; } /** * getGoals gets the player's total goals scored * * @return Total goals scored. */ public int getGoals() { return goals; } /** * getAssists gets the player's total assists recorded * * @return Total assists recorded. */ public int getAssists() { return assists; } /** * getGamesWon gets the player's total games won * * @return Total games won. */ public int getGamesWon() { return gamesWon; } /** * getGamesLost gets the player's total games lost * * @return Total games lost. */ public int getGamesLost() { return gamesLost; } /** * Calculates total points (goals + assists). * * @return The sum of goals and assists. */ public int getPoints() { return goals + assists; } /** * Calculates total games played. * * @return The sum of games won and games lost. */ public int getGamesPlayed() { return gamesWon + gamesLost; } /** * Calculates the average points earned per game. * * @return Points divided by games played as a double. */ public double getPointsPerGame() { return (double) getPoints() / (double) getGamesPlayed(); } /** * Returns a formatted string containing the player's full statistics. * * @return A multi-line summary of the player. */ public String toString() { String s = String.format( "Name: %s%nGoals: %d\tAssists: %d\tPoints: %d\tPoints Per Game: %.2f%nGames Won: %d" + "\tGames Lost: %d\tGames Played: %d%n", name, goals, assists, getPoints(), getPointsPerGame(), gamesWon, gamesLost, getGamesPlayed()); return s; } /** * Returns the raw data of the player in a single line format. * * @return A string formatted as "name goals assists wins losses". */ public String getData() { return String.format("%s %d %d %d %d%n", name, goals, assists, gamesWon, gamesLost); } /** * Compares this player to another object for equality based on name. * * @param o The object to compare. * @return true if the names are equal, false otherwise. */ public boolean equals(Object o) { if (!(o instanceof HockeyPlayer)) return false; HockeyPlayer p = (HockeyPlayer) o; return this.name.equals(p.name); } /** * Compares this player to another for sorting purposes based on name. * * @param o The object to compare. * @return A negative integer, zero, or a positive integer as this name is less than, equal to, or * greater than the specified player's name. */ public int compareTo(Object o) { HockeyPlayer p = (HockeyPlayer) o; return this.name.compareTo(p.name); } /** * Updates the player's career statistics by adding a new game's results. * * @param goals Number of goals scored in the game. * @param assists Number of assists made in the game. * @param gameWon True if the game resulted in a win, false if a loss. */ public void addGame(int goals, int assists, boolean gameWon) { this.goals += goals; this.assists += assists; if (gameWon) gamesWon++; else gamesLost++; } }