Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Да се имплементира класа F1Race која ќе чита од влезен тек (стандарден влез, датотека, ...) податоци за времињата од последните 3 круга на неколку пилоти на Ф1 трка. Податоците се во следниот формат:
- Driver_name lap1 lap2 lap3, притоа lap е во формат mm:ss:nnn каде mm се минути ss се секунди nnn се милисекунди (илјадити делови од секундата). Пример:
- Vetel 1:55:523 1:54:987 1:56:134.
- Ваша задача е да ги имплементирате методите:
- F1Race() - default конструктор
- void readResults(InputStream inputStream) - метод за читање на податоците
- void printSorted(OutputStream outputStream) - метод кој ги печати сите пилоти сортирани според нивното најдобро време (најкраткото време од нивните 3 последни круга) во формат Driver_name best_lap со 10 места за името на возачот (порамнето од лево) и 10 места за времето на најдобриот круг порамнето од десно. Притоа времето е во истиот формат со времињата кои се читаат.
- Тест пример:
- Massa 1:57:563 1:55:187 1:55:634
- Vettel 1:55:523 1:54:987 1:56:134
- Alonso 1:53:563 1:56:187 1:54:139
- Hamilton 1:56:174 1:54:371 1:56:199
- Тест излез:
- 1. Alonso 1:53:563
- 2. Hamilton 1:54:371
- 3. Vettel 1:54:987
- 4. Massa 1:55:187
- Почетен код:
- public class F1Test {
- public static void main(String[] args) {
- F1Race f1Race = new F1Race();
- f1Race.readResults(System.in);
- f1Race.printSorted(System.out);
- }
- }
- Решение:
- import java.io.BufferedReader;
- import java.io.InputStream;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.stream.Collectors;
- import java.util.Comparator;
- import java.util.Collections;
- class F1Driver {
- String name;
- String firstLap, secondLap, thirdLap;
- F1Driver (String name, String firstLap, String secondLap, String thirdLap) {
- this.name = name;
- this.firstLap = firstLap;
- this.secondLap = secondLap;
- this.thirdLap = thirdLap;
- }
- String bestLap() {
- String bestLap = firstLap;
- if (bestLap.compareTo(secondLap) > 0)
- bestLap = secondLap;
- if (bestLap.compareTo(thirdLap) > 0)
- bestLap = thirdLap;
- return bestLap;
- }
- @Override
- public String toString() {
- return String.format("%10s %-10s", name, bestLap());
- }
- }
- class F1Race {
- private List<F1Driver> drivers;
- public F1Race() {
- drivers = new ArrayList<>();
- }
- public void readResults(InputStream inputStream) {
- InputStreamReader isr = new InputStreamReader(inputStream);
- BufferedReader bf = new BufferedReader(isr);
- drivers = bf.lines()
- .map(line -> {
- String line1 [] =
- line.split(" ");
- return new F1Driver(line1[0], line1[1], line1[2], line1[3]);
- })
- .sorted(Comparator.comparing(F1Driver::bestLap))
- .collect(Collectors.toList());
- }
- public void printSorted(OutputStream outputStream) {
- PrintWriter pw = new PrintWriter(outputStream);
- for(int i = 0; i < drivers.size(); i++)
- pw.printf("%d. %s\n", i + 1, drivers.get(i).toString());
- pw.flush();
- }
- }
- public class F1Test {
- public static void main(String[] args) {
- F1Race f1Race = new F1Race();
- f1Race.readResults(System.in);
- f1Race.printSorted(System.out);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement