Advertisement
Niksi

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

Jun 18th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.96 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4. import java.util.Comparator;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import java.util.TreeMap;
  9. import java.util.stream.Collectors;
  10. import java.util.stream.IntStream;
  11.  
  12. /**
  13.  * Partial exam II 2016/2017
  14.  */
  15. public class FootballTableTest {
  16.     public static void main(String[] args) throws IOException {
  17.         FootballTable table = new FootballTable();
  18.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  19.         reader.lines()
  20.                 .map(line -> line.split(";"))
  21.                 .forEach(parts -> table.addGame(parts[0], parts[1],
  22.                         Integer.parseInt(parts[2]),
  23.                         Integer.parseInt(parts[3])));
  24.         reader.close();
  25.         System.out.println("=== TABLE ===");
  26.         System.out.printf("%-19s%5s%5s%5s%5s%5s\n", "Team", "P", "W", "D", "L", "PTS");
  27.         table.printTable();
  28.     }
  29. }
  30.  
  31. // Your code here
  32.  
  33. class Team {
  34.     String name;
  35.     int pobedi;
  36.     int nereseni;
  37.     int porazi;
  38.     int primenigolovi;
  39.     int dadenigolovi;
  40.    
  41.     public Team(String name, int dadenigolovi, int prinmenigolovi) {
  42.         super();
  43.         this.name = name;
  44.         this.pobedi=0;
  45.         this.porazi=0;
  46.         this.nereseni=0;
  47.         this.dadenigolovi=0;
  48.         this.primenigolovi=0;
  49.         this.setDadenigolovi(dadenigolovi);
  50.         this.setPrinmenigolovi(prinmenigolovi);
  51.         utakmica(dadenigolovi,prinmenigolovi);
  52.        
  53.        
  54.     }
  55.  
  56.     public void utakmica(int a,int b) {
  57.         int gol = a-b;
  58.         if(gol>0) {
  59.             pobedi++;
  60.         }
  61.         else if(gol==0) {
  62.             nereseni++;
  63.         }
  64.         else {
  65.             porazi++;
  66.         }
  67.     }
  68.    
  69.    
  70.    
  71.     public String getName() {
  72.         return name;
  73.     }
  74.  
  75.     public void setName(String name) {
  76.         this.name = name;
  77.     }
  78.  
  79.     public int getPobedi() {
  80.         return pobedi;
  81.     }
  82.  
  83.     public void setPobedi(int pobedi) {
  84.         this.pobedi += pobedi;
  85.     }
  86.  
  87.     public int getNereseni() {
  88.         return nereseni;
  89.     }
  90.  
  91.     public void setNereseni(int nereseni) {
  92.         this.nereseni += nereseni;
  93.     }
  94.  
  95.     public int getPorazi() {
  96.         return porazi;
  97.     }
  98.  
  99.     public void setPorazi(int porazi) {
  100.         this.porazi += porazi;
  101.     }
  102.  
  103.     public int getPrinmenigolovi() {
  104.         return primenigolovi;
  105.     }
  106.  
  107.     public void setPrinmenigolovi(int prinmenigolovi) {
  108.         this.primenigolovi += prinmenigolovi;
  109.     }
  110.  
  111.     public int getDadenigolovi() {
  112.         return dadenigolovi;
  113.     }
  114.  
  115.     public void setDadenigolovi(int dadenigolovi) {
  116.         this.dadenigolovi += dadenigolovi;
  117.     }
  118.    
  119.     public int bodovi() {
  120.         return 3 * pobedi + nereseni;
  121.     }
  122.    
  123.     public int golrazlika() {
  124.         return dadenigolovi-primenigolovi;
  125.     }
  126.    
  127.     public int odigrani() {
  128.         return pobedi+nereseni+porazi;
  129.     }
  130.    
  131.    
  132.    
  133.     @Override
  134.     public String toString() {
  135.         return String.format("%-15s%5d%5d%5d%5d%5d\n", name, odigrani(),pobedi,nereseni,porazi,bodovi());
  136.     }
  137.    
  138. }
  139.  
  140. class FootballTable{
  141.     Map<String,Team> map;
  142.  
  143.     public FootballTable() {
  144.         map=new HashMap<>();
  145.     }
  146.    
  147.     public void addGame(String homeTeam, String awayTeam, int homeGoals, int awayGoals) {
  148.        
  149.         map.computeIfPresent(homeTeam, (key,value) -> {
  150.             value.utakmica(homeGoals, awayGoals);
  151.             value.setDadenigolovi(homeGoals);
  152.             value.setPrinmenigolovi(awayGoals);
  153.             return value;
  154.         });
  155.        
  156.         map.computeIfPresent(awayTeam, (key,value) -> {
  157.             value.utakmica(awayGoals, homeGoals);
  158.             value.setDadenigolovi(awayGoals);
  159.             value.setPrinmenigolovi(homeGoals);
  160.             return value;
  161.         });
  162.        
  163.         map.computeIfAbsent(homeTeam, (key) ->{
  164.             return new Team(homeTeam,homeGoals,awayGoals);
  165.         });
  166.        
  167.         map.computeIfAbsent(awayTeam, (key) ->{
  168.             return new Team(awayTeam,awayGoals,homeGoals);
  169.         });
  170.        
  171.    
  172.     }
  173.    
  174.     public void printTable() {
  175.         List<Team> lista=map.values().stream()
  176.         .sorted(Comparator.comparing(Team::bodovi)
  177.                 .thenComparing(Team::golrazlika).reversed()
  178.                 .thenComparing(Team::getName))
  179.                 .collect(Collectors.toList());
  180.         for(int i=0;i<lista.size();i++) {
  181.             System.out.print(String.format("%2d. %s", (i+1),lista.get(i).toString()));
  182.         }
  183.     }
  184.    
  185.    
  186.    
  187.    
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement