kristina7

НП - Фудбалска табела

Jan 9th, 2019
608
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.47 KB | None | 0 0
  1. /*
  2. Да се имплементира класа FootballTable за обработка од податоците за повеќе фудбласки натпревари од една лига и прикажување на табелата на освоени поени според резултатите од натпреварите. Во класата да се имплементираат:
  3.  
  4. public void addGame(String homeTeam, String awayTeam, int homeGoals, int awayGoals) - метод за додавање податоци за одигран натпревар помеѓу тимот со име homeTeam (домашен тим) и тимот со име awayTeam (гостински тим), при што homeGoals претставува бројот на постигнати голови од домашниот тим, а awayGoals бројот на постигнати голови од гостинскиот тим.
  5. public void printTable() - метод за печатење на табелата според одиграните (внесените) натпревари. Во табелата се прикажуваат редниот број на тимот во табелата, името (со 15 места порамнето во лево), бројот на одиграни натпревари, бројот на победи, бројот на нерешени натпревари, бројот на освоени поени (сите броеви се печатат со 5 места порамнети во десно). Бројот на освоени поени се пресметува како број_на_победи x 3 + број_на_нерешени x 1. Тимовите се подредени според бројот на освоени поени во опаѓачки редослед, ако имаат ист број на освоени поени според гол разликата (разлика од постигнатите голови и примените голови) во опаѓачки редослед, а ако имаат иста гол разлика, според името.
  6. */
  7.  
  8. import java.io.BufferedReader;
  9. import java.io.IOException;
  10. import java.io.InputStreamReader;
  11. import java.util.Comparator;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. import java.util.TreeMap;
  16. import java.util.stream.Collectors;
  17. import java.util.stream.IntStream;
  18.  
  19.  
  20. class Team{
  21.     String name;
  22.     int w, d, l, gamesPlayed;
  23.     int goalDifference;
  24.     public Team(String name) {
  25.         this.name = name;
  26.         this.w = 0;
  27.         this.d = 0;
  28.         this.l = 0;
  29.         this.gamesPlayed = 0;
  30.         this.goalDifference = 0;
  31.     }
  32.     public void updateTable(int goalsScored, int otherTeamGoalsScored) {
  33.         ++gamesPlayed;
  34.         int result = goalsScored - otherTeamGoalsScored;
  35.         if(result > 0)
  36.             w++;
  37.         else if(result == 0)
  38.             d++;
  39.         else
  40.             l++;
  41.         goalDifference+=result;
  42.     }
  43.     public int points() {
  44.         return w*3 + d;
  45.     }
  46.     @Override
  47.     public String toString() {
  48.         return String.format("%-15s%5d%5d%5d%5d%5d", name, gamesPlayed, w, d, l, points());
  49.     }  
  50. }
  51.  
  52. class FootballTable{
  53.     Map<String, Team> teams;
  54.    
  55.     public FootballTable() {
  56.         teams = new TreeMap<>();
  57.     }
  58.     public void addGame(String homeTeam, String awayTeam, int homeGoals, int awayGoals) {
  59.         teams.computeIfAbsent(homeTeam, key -> new Team(homeTeam));
  60.         teams.computeIfAbsent(awayTeam, key -> new Team(awayTeam));
  61.        
  62.         teams.get(homeTeam).updateTable(homeGoals, awayGoals);
  63.         teams.get(awayTeam).updateTable(awayGoals, homeGoals);
  64.     }
  65.     public void printTable() {
  66.         List<Team> lista = teams.values().stream().sorted(Comparator.comparing(Team::points).thenComparing(team -> team.goalDifference).reversed())
  67.         .collect(Collectors.toList());
  68.         lista.forEach(team -> System.out.printf("%2d %s\n",lista.indexOf(team)+1, team));
  69.     }
  70. }
  71.  
  72. public class FootballTableTest {
  73.     public static void main(String[] args) throws IOException {
  74.         FootballTable table = new FootballTable();
  75.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  76.         reader.lines()
  77.                 .map(line -> line.split(";"))
  78.                 .forEach(parts -> table.addGame(parts[0], parts[1],
  79.                         Integer.parseInt(parts[2]),
  80.                         Integer.parseInt(parts[3])));
  81.         reader.close();
  82.         System.out.println("=== TABLE ===");
  83.         System.out.printf("%-19s%5s%5s%5s%5s%5s\n", "Team", "P", "W", "D", "L", "PTS");
  84.         table.printTable();
  85.     }
  86. }
Advertisement
Add Comment
Please, Sign In to add comment