Advertisement
Martina312

[НП] - TimeTable

Aug 20th, 2020
1,595
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.78 KB | None | 0 0
  1. import java.io.InputStream;
  2. import java.io.OutputStream;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import java.util.Scanner;
  6.  
  7. class UnsupportedFormatException extends Exception{
  8.     public UnsupportedFormatException(String message) {
  9.         super(message);
  10.     }
  11. }
  12.  
  13. class InvalidTimeException extends Exception{
  14.     public InvalidTimeException(String message) {
  15.         super(message);
  16.     }
  17. }
  18.  
  19. class Time implements Comparable<Time> {
  20.     private int hour;
  21.     private int minutes;
  22.  
  23.     public Time(int hour, int minutes) {
  24.         this.hour = hour;
  25.         this.minutes = minutes;
  26.     }
  27.  
  28.     public int getHour() {
  29.         return hour;
  30.     }
  31.  
  32.     public void setHour(int hour) {
  33.         this.hour = hour;
  34.     }
  35.  
  36.     public int getMinutes() {
  37.         return minutes;
  38.     }
  39.  
  40.     public void setMinutes(int minutes) {
  41.         this.minutes = minutes;
  42.     }
  43.  
  44.     @Override
  45.     public String toString() {
  46.         return String.format("%2d:%02d",hour,minutes);
  47.     }
  48.  
  49.     @Override
  50.     public int compareTo(Time o) {
  51.         if (this.hour == o.hour)
  52.             return Integer.compare(minutes,o.minutes);
  53.         return Integer.compare(hour,o.hour);
  54.     }
  55. }
  56.  
  57. class TimeTable{
  58.     List<Time> times;
  59.  
  60.     public TimeTable() {
  61.         this.times = new ArrayList<>();
  62.     }
  63.  
  64.     public void readTimes(InputStream inputStream) throws UnsupportedFormatException, InvalidTimeException {
  65.         Scanner in = new Scanner(inputStream);
  66.  
  67.         while (in.hasNextLine()){
  68.             String line = in.nextLine();
  69.             String[] parts = line.split("\\s+");
  70.  
  71.             for(int i=0; i<parts.length; i++){
  72.                 String time = parts[i];
  73.                 if (!time.contains(".") && !time.contains(":"))
  74.                     throw new UnsupportedFormatException(time);
  75.  
  76.                 time = time.replace(".", ":");
  77.                 int hours = Integer.parseInt(time.split(":")[0]);
  78.                 int minutes = Integer.parseInt(time.split(":")[1]);
  79.  
  80.                 if (hours > 23 || hours < 0 || minutes > 59 || minutes < 0)
  81.                     throw new InvalidTimeException(time);
  82.  
  83.                 times.add(new Time(hours,minutes));
  84.             }
  85.         }
  86.     }
  87.  
  88.     public void writeTimes(OutputStream outputStream, TimeFormat format){
  89.         times.sort(Time::compareTo);
  90.         if (format.equals(TimeFormat.FORMAT_AMPM)){
  91.             times.forEach(time -> {
  92.                 if (time.getHour() == 0) {
  93.                     time.setHour(12);
  94.                     System.out.println(time + " AM");
  95.                 }
  96.                 else if(time.getHour()>=1 && time.getHour()<12)
  97.                     System.out.println(time+" AM");
  98.                 else if(time.getHour()==12)
  99.                     System.out.println(time+" PM");
  100.                 else if(time.getHour()>=13 && time.getHour()<24){
  101.                     time.setHour(time.getHour()-12);
  102.                     System.out.println(time+" PM");
  103.                 }
  104.             });
  105.         }else{
  106.             times.forEach(System.out::println);
  107.         }
  108.     }
  109. }
  110.  
  111. public class TimesTest {
  112.  
  113.     public static void main(String[] args) {
  114.         TimeTable timeTable = new TimeTable();
  115.         try {
  116.             timeTable.readTimes(System.in);
  117.         } catch (UnsupportedFormatException e) {
  118.             System.out.println("UnsupportedFormatException: " + e.getMessage());
  119.         } catch (InvalidTimeException e) {
  120.             System.out.println("InvalidTimeException: " + e.getMessage());
  121.         }
  122.         System.out.println("24 HOUR FORMAT");
  123.         timeTable.writeTimes(System.out, TimeFormat.FORMAT_24);
  124.         System.out.println("AM/PM FORMAT");
  125.         timeTable.writeTimes(System.out, TimeFormat.FORMAT_AMPM);
  126.     }
  127.  
  128. }
  129.  
  130. enum TimeFormat {
  131.     FORMAT_24, FORMAT_AMPM
  132. }
  133.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement