Advertisement
popovstefan

[NP] F1Race

Nov 14th, 2018
440
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.99 KB | None | 0 0
  1. Да се имплементира класа F1Race која ќе чита од влезен тек (стандарден влез, датотека, ...) податоци за времињата од последните 3 круга на неколку пилоти на Ф1 трка. Податоците се во следниот формат:
  2.  
  3. Driver_name lap1 lap2 lap3, притоа lap е во формат mm:ss:nnn каде mm се минути ss се секунди nnn се милисекунди (илјадити делови од секундата). Пример:
  4.  
  5. Vetel 1:55:523 1:54:987 1:56:134.
  6.  
  7. Ваша задача е да ги имплементирате методите:
  8.  
  9. F1Race() - default конструктор
  10. void readResults(InputStream inputStream) - метод за читање на податоците
  11. void printSorted(OutputStream outputStream) - метод кој ги печати сите пилоти сортирани според нивното најдобро време (најкраткото време од нивните 3 последни круга) во формат Driver_name best_lap со 10 места за името на возачот (порамнето од лево) и 10 места за времето на најдобриот круг порамнето од десно. Притоа времето е во истиот формат со времињата кои се читаат.
  12.  
  13.  
  14. Тест пример:
  15.  
  16. Massa 1:57:563 1:55:187 1:55:634
  17. Vettel 1:55:523 1:54:987 1:56:134
  18. Alonso 1:53:563 1:56:187 1:54:139
  19. Hamilton 1:56:174 1:54:371 1:56:199
  20.  
  21. Тест излез:
  22.  
  23. 1. Alonso      1:53:563
  24. 2. Hamilton    1:54:371
  25. 3. Vettel      1:54:987
  26. 4. Massa       1:55:187
  27.  
  28. Почетен код:
  29.  
  30. public class F1Test {
  31.  
  32.     public static void main(String[] args) {
  33.         F1Race f1Race = new F1Race();
  34.         f1Race.readResults(System.in);
  35.         f1Race.printSorted(System.out);
  36.     }
  37.  
  38. }
  39.  
  40.  
  41.  
  42.  
  43. Решение:
  44.  
  45.  
  46. import java.io.BufferedReader;
  47. import java.io.InputStream;
  48. import java.io.InputStreamReader;
  49. import java.io.OutputStream;
  50. import java.io.PrintWriter;
  51. import java.util.ArrayList;
  52. import java.util.List;
  53. import java.util.stream.Collectors;
  54. import java.util.Comparator;
  55. import java.util.Collections;
  56. class F1Driver {
  57.     String name;
  58.     String firstLap, secondLap, thirdLap;
  59.  
  60.     F1Driver (String name, String firstLap, String secondLap, String thirdLap) {
  61.         this.name = name;
  62.         this.firstLap = firstLap;
  63.         this.secondLap = secondLap;
  64.         this.thirdLap = thirdLap;
  65.     }
  66.  
  67.     String bestLap() {
  68.         String bestLap = firstLap;
  69.         if (bestLap.compareTo(secondLap) > 0)
  70.             bestLap = secondLap;
  71.         if (bestLap.compareTo(thirdLap) > 0)
  72.             bestLap = thirdLap;
  73.         return bestLap;
  74.     }
  75.  
  76.     @Override
  77.     public String toString() {
  78.         return String.format("%10s %-10s", name, bestLap());
  79.     }
  80. }
  81. class F1Race {
  82.     private List<F1Driver> drivers;
  83.     public F1Race() {
  84.         drivers = new ArrayList<>();
  85.     }
  86.     public void readResults(InputStream inputStream) {
  87.         InputStreamReader isr = new InputStreamReader(inputStream);
  88.         BufferedReader bf = new BufferedReader(isr);
  89.         drivers = bf.lines()
  90.         .map(line -> {
  91.             String line1 [] =
  92.             line.split(" ");
  93.             return new F1Driver(line1[0], line1[1], line1[2], line1[3]);
  94.         })
  95.         .sorted(Comparator.comparing(F1Driver::bestLap))
  96.         .collect(Collectors.toList());
  97.     }
  98.     public void printSorted(OutputStream outputStream) {
  99.         PrintWriter pw = new PrintWriter(outputStream);
  100.         for(int i = 0; i < drivers.size(); i++)
  101.             pw.printf("%d. %s\n", i + 1, drivers.get(i).toString());
  102.         pw.flush();
  103.     }
  104. }
  105.  
  106.  
  107. public class F1Test {
  108.  
  109.     public static void main(String[] args) {
  110.         F1Race f1Race = new F1Race();
  111.         f1Race.readResults(System.in);
  112.         f1Race.printSorted(System.out);
  113.     }
  114.  
  115. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement