No to teraz zadanie na miarę stażysty java :D
- Zrób tak, żeby Twoja funkcja zajmowała się tylko obliczeniami, tj. pozbądź się z niej wyświetlania danych. Dobrze by było gdyby main się tym zajmował, a nie urywał na jakimś count który... nie tylko robi count:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Wprowadź czas rozpocęcia pracy: ");
String hourStart = scanner.nextLine();
String hourEnd = scanner.nextLine();
int overtime = countOvertimeMinutes(hourStart, hourEnd);
System.out.printf("%d:%02d", overtime / 60, overtime % 60);
}
- Dodaj komentarze. Nie za dużo, nie za mało.
- Co to jest 510L? Zrób z tego stałą i nadaj jej odpowiednią nazwę, żeby nie był potrzebny komentarz.
- Następnym etapem powinna być walidacja danych wejściowych, tj. sprawdzenie czy ktoś nie wprowadził niemożliwych do sparsowania danych. Niestety u Ciebie parsowaniem nadal zajmuje się funkcja
countOvertime
. Proponuję więc przenieść parsowanie na zewnątrz funkcji liczącej, a tą przerobić tak, żeby przyjmowała parametry typu LocalDateTime.
Ja bym zrobił funkcję do pobierania danych typu datetime, żeby w mainie mieć coś w rodzaju:
System.out.print("Wprowadź czas rozpocęcia pracy: ");
LocalDateTime dtStart = readDateTime();
System.out.print("Wprowadź czas zakończenia pracy: ");
LocalDateTime dtEnd = readDateTime();
if (dtStart != null && dtEnd != null) {// sprawdzenie czy wczytaliśmy
int overtime = countOvertimeMinutes(hourStart, hourEnd);
System.out.printf("%d:%02d", overtime / 60, overtime % 60);
}
A może nawet funkcja readDateTime mogła też zrobić System.out.print
:
LocalDateTime dtStart = readDateTime("Wprowadź czas rozpoczęcia pracy: ");
Wtedy main wyglądał by jakoś tak:
LocalDateTime dtStart = readDateTime("Wprowadź czas rozpocęcia pracy: ");
LocalDateTime dtEnd = readDateTime("Wprowadź czas zakończenia pracy: ");
if (dtStart != null && dtEnd != null) { // sprawdzenie czy udało się wczytać cokolwiek
// można jeszcze sprawdzić, czy wprowadzony czas nie różni się od bieżącej daty o np. więcej niż 3 dni
int overtime = countOvertimeMinutes(hourStart, hourEnd);
System.out.printf("%d:%02d", overtime / 60, overtime % 60); // to można też obudować funkcją która by wyświetlała minuty jako hh:mm
}