Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Main ----- package E5_FootballTeamGenerator;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.Map;
- public class Main {
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- String line;
- Map<String, Team> storeTeams = new HashMap<>();
- while (!"END".equals((line = reader.readLine()))) {
- String[] tokens = line.split(";");
- String cmd = tokens[0];
- String teamName = tokens[1];
- try {
- switch (cmd.toLowerCase()) {
- case "team":
- storeTeams.putIfAbsent(teamName, new Team(teamName));
- break;
- case "add":
- if (!storeTeams.containsKey(teamName)) {
- throw new IllegalArgumentException("Team " + teamName + " does not exist.");
- }
- Player player = new Player(tokens[2], Integer.parseInt(tokens[3]), Integer.parseInt(tokens[4]),
- Integer.parseInt(tokens[5]), Integer.parseInt(tokens[6]), Integer.parseInt(tokens[7]));
- storeTeams.get(teamName).addPlayer(player);
- break;
- case "remove":
- storeTeams.get(teamName).removePlayer(tokens[2]);
- break;
- case "rating":
- if (!storeTeams.containsKey(teamName)) {
- throw new IllegalArgumentException("Team " + teamName + " does not exist.");
- }
- System.out.println(storeTeams.get(teamName).toString());
- break;
- }
- } catch (IllegalArgumentException e) {
- System.out.println(e.getMessage());
- }
- }
- }
- }
- Player ---------
- package E5_FootballTeamGenerator;
- public class Player {
- private String name;
- private int endurance;
- private int sprint;
- private int dribble;
- private int passing;
- private int shooting;
- public Player(String name, int endurance, int sprint, int dribble, int passing, int shooting) {
- this.setName(name);
- this.setEndurance(endurance);
- this.setSprint(sprint);
- this.setDribble(dribble);
- this.setPassing(passing);
- this.setShooting(shooting);
- }
- public String getName() {
- return this.name;
- }
- private void setName(String name) {
- if (name.trim().isEmpty()) {
- throw new IllegalArgumentException("A name should not be empty.");
- }
- this.name = name;
- }
- private void setEndurance(int endurance) {
- validateStats("Endurance",endurance);
- this.endurance = endurance;
- }
- private void setSprint(int sprint) {
- validateStats( "Sprint",sprint);
- this.sprint = sprint;
- }
- private void setDribble(int dribble) {
- validateStats("Dribble", dribble);
- this.dribble = dribble;
- }
- private void setPassing(int passing) {
- validateStats("Passing", passing);
- this.passing = passing;
- }
- private void setShooting(int shooting) {
- validateStats("Shooting", shooting);
- this.shooting = shooting;
- }
- private void validateStats(String source, int value) {
- if (value < 0 || value > 100) {
- throw new IllegalArgumentException(source + " should be between 0 and 100.");
- }
- }
- public double overallSkillLevel() {
- double sum = this.endurance +
- this.sprint +
- this.dribble +
- this.passing +
- this.shooting;
- return sum / 5;
- }
- }
- Team --------
- package E5_FootballTeamGenerator;
- import java.util.ArrayList;
- import java.util.List;
- public class Team {
- private String name;
- private List<Player> players;
- public Team(String name) {
- this.setName(name);
- this.players = new ArrayList<>();
- }
- public String getName() {
- return this.name;
- }
- private void setName(String name) {
- if (name == null || name.trim().isEmpty()) {
- throw new IllegalArgumentException("A name should not be empty.");
- }
- this.name = name;
- }
- public void addPlayer(Player player) {
- this.players.add(player);
- }
- public void removePlayer(String name) {
- Player player = this.players.stream().filter(e -> e.getName().equals(name)).findFirst().orElse(null);
- if(player != null){
- this.players.remove(player);
- }else{
- throw new IllegalArgumentException("Player "+ name +" is not in Arsenal team.");
- }
- }
- public double getRating() {
- return Math.round(this.players.stream()
- .mapToDouble(Player::overallSkillLevel)
- .average()
- .orElse(0));
- }
- @Override
- public String toString() {
- return String.format("%s - %.0f", this.name, this.getRating());
- }
- }
Add Comment
Please, Sign In to add comment