Load function ***PLEASE HELP

Load function ***PLEASE HELP

Hi I am writing a program that tracks the statistics of sport players. Right now I have it where you can add players, remove players, save players, sort the list, or save it. I need to add another function that loads a file. The save function prompts the user to enter the filename for which the players stats will be saved to, then it is saved. I need a load function that prompts the user for the file name to be loaded and then it loads the stats. Here are the exact instructions.

LOAD: Prompts the user for a filename that was created by a previous SAVE operation. The players represented in the SAVE file that do not already exist in the current list of players are added to the current list of players in the application. Each player may be assumed to have a unique name. Note, neither first nor last names alone can be assumed to be unique, but the combination of both first and last name can be assumed to be unique. E.g., Jane Doe, Jane Smith, and John Doe are all valid unique names for players. 5. Each player class must implement a new constructor that takes a single formatted string as its parameter. This constructor should, in essence, create an object with the appropriate instanced information from a string produced previously by its own toString() method. Use these constructors in your LOAD implementations.

Thank you so much for your help. I really need help to get this done as this project is due on monday for me.

My code right now looks like this.

/*

  • A limited application that tracks the statistics of players. For each player,

  • the application tracks the players scores for their given sport.

    */

package project4walker;

import java.io.*;

import java.util.*;

import java.util.zip.GZIPInputStream;

/**

  • Cassandra Walker

  • Mr. Ondrasek

  • Project 4

  • Katie Timmerman

    */

public class Main {

public static void main(String[] args) throws Exception {

    // Scanner is created

    Scanner input = new Scanner(System.in);

    // Creates the array list, type player, name soccer

    ArrayList<PlayerStats> list = new ArrayList<PlayerStats>();

    // the boolean is created

    boolean start = true;

    // The while loop will only work if the boolean is true

    while (start == true) {

        // Prompts the user for which operation they wish to make

        System.out.println("What operation next? (ADD, REMOVE, SHOW, SAVE, SORT, LOAD, QUIT)");

        String userInput = input.next();

        // If the user chooses add this loop is started,

        if (userInput.equalsIgnoreCase("ADD")) {

            add(list, input);

        } // end add if

        else if (userInput.equalsIgnoreCase("REMOVE")) {

            remove(list, input);

        }// end remove if

        else if (userInput.equalsIgnoreCase("SHOW")) {

            show(list);

        }// end show if

        else if (userInput.equalsIgnoreCase("SORT")) {

            list = sort(list);

        }// end sort if

        else if (userInput.equalsIgnoreCase("SAVE")) {

            save(list, input);

        }// end save if

        else if (userInput.equalsIgnoreCase("QUIT")) {

            // goodbye is printed out

            System.out.println("** Goodbye! **");

            // The boolean is now false and the program is stopped

            start = false;

            // If the user chooses anything besides what is available then an error message is printed

        } else {

            System.out.println("Operation not recognized. Please choose from the available list.");

        }

    }// end of boolean



}//end of method



public static void add(ArrayList list, Scanner input) {

    boolean run = true;

    // beginning of the while loop and the boolean is true

    while (run) {

        System.out.println("Please enter Sport (Soccer, Basketball, Baseball)");

        String charInput = input.next();

        // if, if the user inputs soccer as the sport

        if (charInput.equalsIgnoreCase("SOCCER")) {

            PlayerStats newPlayer = new SoccerPlayerStats();

            // gets the values that are prompted for in the players stats class

            newPlayer.getsValuesFromConsole();

            System.out.println(newPlayer + "\n");

            // adds the new player to the array list

            list.add(newPlayer);

            // the boolean is now false so that loop can be exited

            run = false;

        }// end soccer add if

        // if, if the user inputs basketball for the sport

        else if (charInput.equalsIgnoreCase("Basketball")) {

            PlayerStats newPlayer = new BasketballPlayerStats();

            // gets the values that the user is prompted for in the player stats class

            newPlayer.getsValuesFromConsole();

            System.out.println(newPlayer + "\n");

            // add the new player to the array list

            list.add(newPlayer);

            //boolean is now false so that the loop can be exited

            run = false;

        }// end basketball add if

        // if, if the user inputs baseball for the sport

        else if (charInput.equalsIgnoreCase("BASEBALL")) {

            PlayerStats newPlayer = new BaseballPlayerStats();

            // the user is prompted for the values

            newPlayer.getsValuesFromConsole();

            System.out.println(newPlayer + "\n");

            //the player is added to the array list

            list.add(newPlayer);

            // the boolean is now false so that the loop can be exited

            run = false;

        }// end baseball add if

        // if the user did not choose a correct sport an error message is printed

        else {

            System.out.println("Please choose a sport");

        }// end of else loop if the user inputs the wrong sport or nothing

    }// end of while loop

}// end of add method



public static void remove(ArrayList<PlayerStats> list, Scanner input) {

    // the user is prompted for the players last name to be removed

    System.out.println("Please enter last name of player to remove");

    String lastName = input.next();

    // the user is prompted for the players first name to be removed

    System.out.println("Please enter first name of player to remove");

    String firstName = input.next();

    // if the list is empty then an error message is printed

    if (list.isEmpty()) {

        System.out.println("No players in the list");

    }// end list empty if

    // the player is being removed

    for (PlayerStats removeStats : list) {

        if (lastName.equalsIgnoreCase(removeStats.getslastName())

                && firstName.equalsIgnoreCase(removeStats.getsfirstName())) {

            list.remove(removeStats);

            System.out.println("** REMOVED " + firstName + " " + lastName + " **");

            break;

            // if the player does not exist then an error message is printed

        } else {

            System.out.println("Player not found");

        }// end remove player if

    }// end remove for loop

}// end remove method



public static void show(ArrayList<PlayerStats> list) {

    System.out.println("** SHOW ALL PLAYERS **");

    // shows all the players in the list

    for (PlayerStats show : list) {

        System.out.println(show);

    }// end show for loop

    // gives the numbers of records that are in the array

    System.out.println("Total Records: " + list.size());

    //creates the variables for all of the sports

    int pointsScored = 0;

    int assists = 0;

    double freeThrows = 0;

    int basketballCounter = 0;

    int pointsScored2 = 0;

    int assists2 = 0;

    double penaltyKickRate = 0;

    int soccerCounter = 0;

    int hits = 0;

    int homeruns = 0;

    double hitRate = 0.0;

    int baseballCounter = 0;

    // shows the averages for the basketball stats

    for (PlayerStats showAverages : list) {

        if (showAverages instanceof BasketballPlayerStats) {

            BasketballPlayerStats showBasketball = (BasketballPlayerStats) showAverages;

            pointsScored += showBasketball.getsPointsScored();

            assists += showBasketball.getsAssists();

            freeThrows += showBasketball.getFreeThrows();

            basketballCounter++;

        }// end basketball instance if

        // shows the averages for the basketball stats

        if (showAverages instanceof SoccerPlayerStats) {

            SoccerPlayerStats showSoccer = (SoccerPlayerStats) showAverages;

            pointsScored2 += showSoccer.getsPointsScored();

            assists2 += showSoccer.getsAssists();

            penaltyKickRate += showSoccer.getPenaltyKickRate();

            soccerCounter++;

        }// end basketball instance if

        // shows the averages for the baseball stats

        if (showAverages instanceof BaseballPlayerStats) {

            BaseballPlayerStats showBaseball = (BaseballPlayerStats) showAverages;

            hits += showBaseball.getHits();

            homeruns += showBaseball.getHomeruns();

            hitRate += showBaseball.getHitRate();

            baseballCounter++;

        }// end basketball instance if

    }// end averages for loop

    //starts the if loop if the basketballCounter that was created in the earlier code and prints out the averages

    if (basketballCounter > 0) {

        System.out.printf("Basketball Averages for %d players\t points: %d "

                + "  assists: %d   free throw percentage: %.2f\n",

                (basketballCounter), (pointsScored / basketballCounter), (assists / basketballCounter), (freeThrows / basketballCounter));

    }// end basketball print if

     //starts the if loop if the soccerCounter that was created in the earlier code and prints out the averages

    if (soccerCounter > 0) {

        System.out.printf("Soccer Averages for %d players\t points: %d "

                + "  assists: %d   kick rate: %.2f\n",

                (soccerCounter), (pointsScored2 / soccerCounter), (assists2 / soccerCounter), (penaltyKickRate / soccerCounter));

    }// end soccer print if

     //starts the if loop if the baseballCounter that was created in the earlier code and prints out the averages

    if (baseballCounter > 0) {

        System.out.printf("Baseball Averages for %d players\t hits: %d "

                + "  homeruns: %d   bating average: %.2f\n",

                (baseballCounter), (hits / baseballCounter), (homeruns / baseballCounter), (hitRate / baseballCounter));

    }// end basketball print if

}// end show method



public static ArrayList sort(ArrayList<PlayerStats> list) {

    // creates a new array for the new sorted list

    ArrayList<PlayerStats> sortedList = new ArrayList<PlayerStats>();

    // if the list is empty then an error message is printed

    if (list.isEmpty()) {

        System.out.println("There are no players in the list");

    }

    // if the list is not empty then the while loop is started

    while (!list.isEmpty()) {

        // creates the variable for the indexValue when the list is sorted

        int indexValues = 0;

        // creates the first player

        PlayerStats player1 = (PlayerStats) list.get(0);

        for (int i = 1; i < list.size(); i++) {

            // creates the second player

            PlayerStats player2 = (PlayerStats) list.get(i);

            // creates the variable that will compare the last names of the players

            int compareLast = (player1.getslastName().compareToIgnoreCase(player2.getslastName()));

            // if loop that compares the last names of the players

            if (compareLast > 0) {

                player1 = player2;

                indexValues = i;

                // else if that compares the first names of the players if the last name is the same

            } else if (compareLast == 0) {

                // creates the variable that compares the first name of the players

                int compareFirst = (player1.getsfirstName().compareToIgnoreCase(player2.getsfirstName()));

                // if that compares the first names

                if (compareFirst > 0) {

                    player1 = player2;

                    indexValues = 0;

                }//end of if for compare first names

            }//end of else if last names are the same

        }// end of for that goes through the list of players

        // add the players to the new sorted list

        sortedList.add(player1);

        // removes the indexValue for the list

        list.remove(indexValues);



    }// end of while is the list is not empty

    // message printed if the sort was successfule

    System.out.println("The sort was successful.");

    // the sortedList is returned to the main method

    return sortedList;



}// end of sort method



public static void save(ArrayList<PlayerStats> list, Scanner input) throws Exception {

    // prompts the user to enter the file name

    System.out.println("Please enter file name");

    String fileName = input.next();

    // creates the file

    File file = new File(fileName);

    // creates the printwriter that will write to the file

    PrintWriter pw = new PrintWriter(file);

    // for loop that will save the list to the file

    for (PlayerStats save : list) {

        pw.print(save);

    }// end show for loop

    // prints the total number of records to the file

    pw.print("Total Records: " + list.size());

    // creates the variables

    int pointsScored = 0;

    int assists = 0;

    double freeThrows = 0;

    int basketballCounter = 0;

    int pointsScored2 = 0;

    int assists2 = 0;

    double penaltyKickRate = 0;

    int soccerCounter = 0;

    int hits = 0;

    int homeruns = 0;

    double hitRate = 0.0;

    int baseballCounter = 0;

    // for loop that saves all of the averages to the file

    for (PlayerStats saveAverages : list) {

        // if that gets all of the values for the variables

        if (saveAverages instanceof BasketballPlayerStats) {

            BasketballPlayerStats showBasketball = (BasketballPlayerStats) saveAverages;

            // gets the values for the pointsScored

            pointsScored += showBasketball.getsPointsScored();

            // gest the values for the assists

            assists += showBasketball.getsAssists();

            // gets the values for the free throws

            freeThrows += showBasketball.getFreeThrows();

            //basketballCounter is incremented

            basketballCounter++;

        }// end basketball instance if

        // if that saves the averages of the soccer to the file

        if (saveAverages instanceof SoccerPlayerStats) {

            SoccerPlayerStats showSoccer = (SoccerPlayerStats) saveAverages;

            // gets the values for the points socred

            pointsScored2 += showSoccer.getsPointsScored();

            // gets the values for the assists

            assists2 += showSoccer.getsAssists();

            // gets the values for the penalty kick rate

            penaltyKickRate += showSoccer.getPenaltyKickRate();

            // soccerCounter is incremented

            soccerCounter++;

        }// end basketball instance if

        // if the saves all of the baseball average to the file

        if (saveAverages instanceof BaseballPlayerStats) {

            BaseballPlayerStats showBaseball = (BaseballPlayerStats) saveAverages;

            //gets the values for the hits

            hits += showBaseball.getHits();

            // gets the values for the home runs

            homeruns += showBaseball.getHomeruns();

            // gets the values for the hit rate

            hitRate += showBaseball.getHitRate();

            // baseballCounter is incremented

            baseballCounter++;

        }// end basketball instance if

    }// end averages for loop

    // if the basketballCounter is greater than 0 then the averages is saved to the file

    if (basketballCounter > 0) {

        pw.printf("\nBasketball Averages for %d players\t points: %d "

                + "  assists: %d   free throw percentage: %.2f\n",

                (basketballCounter), (pointsScored / basketballCounter), (assists / basketballCounter), (freeThrows / basketballCounter));

    }// end basketball print if

    // if the soccerCounter is greater than 0 then the averages is saved to the file

    if (soccerCounter > 0) {

        pw.printf("\nSoccer Averages for %d players\t points: %d "

                + "  assists: %d   kick rate: %.2f\n",

                (soccerCounter), (pointsScored2 / soccerCounter), (assists2 / soccerCounter), (penaltyKickRate / soccerCounter));

    }// end soccer print if

    // if the baseballCounter is greater than 0 than the averages is saved to the file

    if (baseballCounter > 0) {

        pw.printf("\nBaseball Averages for %d players\t hits: %d "

                + "  homeruns: %d   bating average: %.2f\n",

                (baseballCounter), (hits / baseballCounter), (homeruns / baseballCounter), (hitRate / baseballCounter));

    }// end basketball print if

    // the file is closed

    pw.close();

    // message is printed that the record was saved

    System.out.println("**" + list.size() + " RECORD(S) SAVED TO " + fileName + " **/n");

}// end save method

}//end of class

View Answers









Related Tutorials/Questions & Answers:

Ads