Wpis z mikrobloga

#java #javapomoc #codereview

Czy ten kod jest poprawny? Jak dostanę pytanie żeby wprowadzić liczbę sekund i zamienić na format HH:MM:SS to jak oddam taki kod do będzie ok? Lepsza wersja 1 czy 2? Obie dają ten sam wynik

// input i is time in seconds
// it's being converted to format HH:MM:SS
// Method 1

int i = 86000;
int a = i / 3600;
int b = (i - a * 3600) / 60;
int c = (i - a * 3600) % 60;

System.out.format("%02d:%02d:%02d \n", a, b, c);

// Method 2 - no need to import java.time in 9th version od Java

LocalTime timeOfDay = LocalTime.ofSecondOfDay(i);
String time = timeOfDay.toString();

System.out.println(time);

// the result is the same 23:53:20
  • 4
  • Odpowiedz
@borrow: I ta i ta metoda jest poprawna, ale nie ma sensu pisać własnej implementacji metody - skoro identyczne (a nawet lepsze, dające większe możliwości) już istnieją :) Z ciekawostek, Twój kod można by uprościć:

int b = i % 3600 / 60
int c = i % 60;
  • Odpowiedz
@borrow: Jeśli nie ma limitu na liczbę sekund na wejściu to kod1, jeśli na wejściu nie będzie więcej niż 86399s to kod 2

Dodatkowo w pierwszym kodzie nazwy zmiennych powinny być lepiej dobrane.
  • Odpowiedz
@borrow: Jak to taka typowa rozmowa przy tablicy to napisz na szybko to pierwsze, bo nikomu nie chodzi o to żebyś pamiętał nazwy metod i bibliotek na pamięć - ale możesz wspomnieć, że w kodzie produkcyjnym użyłbyś gotowej metody z java.time :)
  • Odpowiedz