Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Scanner;
- class UnsupportedFormatException extends Exception{
- public UnsupportedFormatException(String message) {
- super(message);
- }
- }
- class InvalidTimeException extends Exception{
- public InvalidTimeException(String message) {
- super(message);
- }
- }
- class Time implements Comparable<Time> {
- private int hour;
- private int minutes;
- public Time(int hour, int minutes) {
- this.hour = hour;
- this.minutes = minutes;
- }
- public int getHour() {
- return hour;
- }
- public void setHour(int hour) {
- this.hour = hour;
- }
- public int getMinutes() {
- return minutes;
- }
- public void setMinutes(int minutes) {
- this.minutes = minutes;
- }
- @Override
- public String toString() {
- return String.format("%2d:%02d",hour,minutes);
- }
- @Override
- public int compareTo(Time o) {
- if (this.hour == o.hour)
- return Integer.compare(minutes,o.minutes);
- return Integer.compare(hour,o.hour);
- }
- }
- class TimeTable{
- List<Time> times;
- public TimeTable() {
- this.times = new ArrayList<>();
- }
- public void readTimes(InputStream inputStream) throws UnsupportedFormatException, InvalidTimeException {
- Scanner in = new Scanner(inputStream);
- while (in.hasNextLine()){
- String line = in.nextLine();
- String[] parts = line.split("\\s+");
- for(int i=0; i<parts.length; i++){
- String time = parts[i];
- if (!time.contains(".") && !time.contains(":"))
- throw new UnsupportedFormatException(time);
- time = time.replace(".", ":");
- int hours = Integer.parseInt(time.split(":")[0]);
- int minutes = Integer.parseInt(time.split(":")[1]);
- if (hours > 23 || hours < 0 || minutes > 59 || minutes < 0)
- throw new InvalidTimeException(time);
- times.add(new Time(hours,minutes));
- }
- }
- }
- public void writeTimes(OutputStream outputStream, TimeFormat format){
- times.sort(Time::compareTo);
- if (format.equals(TimeFormat.FORMAT_AMPM)){
- times.forEach(time -> {
- if (time.getHour() == 0) {
- time.setHour(12);
- System.out.println(time + " AM");
- }
- else if(time.getHour()>=1 && time.getHour()<12)
- System.out.println(time+" AM");
- else if(time.getHour()==12)
- System.out.println(time+" PM");
- else if(time.getHour()>=13 && time.getHour()<24){
- time.setHour(time.getHour()-12);
- System.out.println(time+" PM");
- }
- });
- }else{
- times.forEach(System.out::println);
- }
- }
- }
- public class TimesTest {
- public static void main(String[] args) {
- TimeTable timeTable = new TimeTable();
- try {
- timeTable.readTimes(System.in);
- } catch (UnsupportedFormatException e) {
- System.out.println("UnsupportedFormatException: " + e.getMessage());
- } catch (InvalidTimeException e) {
- System.out.println("InvalidTimeException: " + e.getMessage());
- }
- System.out.println("24 HOUR FORMAT");
- timeTable.writeTimes(System.out, TimeFormat.FORMAT_24);
- System.out.println("AM/PM FORMAT");
- timeTable.writeTimes(System.out, TimeFormat.FORMAT_AMPM);
- }
- }
- enum TimeFormat {
- FORMAT_24, FORMAT_AMPM
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement