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 места за времето на најдобриот круг порамнето од десно. Притоа времето е во истиот формат со времињата кои се читаат.
- //Sample input
- // 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
- //
- //Sample output
- // 1. Alonso 1:53:563
- // 2. Hamilton 1:54:371
- // 3. Vettel 1:54:987
- // 4. Massa 1:55:187
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.io.PrintWriter;
- import java.util.ArrayList;
- import java.util.Scanner;
- public class F1Test {
- public static void main(String[] args) {
- F1Race f1Race = new F1Race();
- f1Race.readResults(System.in);
- f1Race.printSorted(System.out);
- }
- }
- class F1Driver implements Comparable<F1Driver>{
- private final String name;
- private final String lap1;
- private final String lap2;
- private final String lap3;
- F1Driver(String name, String lap1, String lap2, String lap3){
- this.name = name;
- this.lap1 = lap1;
- this.lap2 = lap2;
- this.lap3 = lap3;
- }
- public String bestLap(){
- String max = lap1;
- if(lap2.compareTo(lap1) < 0)
- max = lap2;
- if(lap3.compareTo(max) < 0)
- max = lap3;
- return max;
- }
- @Override
- public int compareTo(F1Driver o) {
- return bestLap().compareTo(o.bestLap());
- }
- @Override
- public String toString() {
- StringBuilder stringBuilder = new StringBuilder();
- stringBuilder.append(name);
- int emptySpaces = 20 - name.length() - bestLap().length();
- for (int i = 0; i < emptySpaces; i++) {
- stringBuilder.append(" ");
- }
- stringBuilder.append(bestLap()).append("\n");
- return stringBuilder.toString();
- }
- }
- class F1Race {
- // vashiot kod ovde
- private final ArrayList<F1Driver> drivers;
- public F1Race(){
- drivers = new ArrayList<>();
- }
- public void readResults(InputStream inputStream){
- Scanner scanner = new Scanner(inputStream);
- while (scanner.hasNextLine()){
- String line = scanner.nextLine();
- String[] tmp = line.split("\\s+");
- String name = tmp[0];
- String lap1 = tmp[1];
- String lap2 = tmp[2];
- String lap3 = tmp[3];
- drivers.add(new F1Driver(name, lap1, lap2, lap3));
- }
- }
- public void sortDrivers(){
- for (int i = 0; i < drivers.size(); i++) {
- for (int j = 0; j < drivers.size() - i - 1; j++) {
- if(drivers.get(j).bestLap().compareTo(drivers.get(j+1).bestLap()) > 0){
- F1Driver temp = drivers.get(j);
- drivers.set(j, drivers.get(j + 1));
- drivers.set(j + 1, temp);
- }
- }
- }
- }
- public void printSorted(OutputStream outputStream){
- sortDrivers();
- PrintWriter printWriter = new PrintWriter(outputStream);
- printWriter.write(this.toString());
- printWriter.flush();
- printWriter.close();
- }
- @Override
- public String toString() {
- StringBuilder stringBuilder = new StringBuilder();
- for (int i = 0; i < drivers.size(); i++) {
- stringBuilder.append(i+1).append(". ");
- stringBuilder.append(drivers.get(i).toString());
- }
- return stringBuilder.toString();
- }
- }
Add Comment
Please, Sign In to add comment