• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java dopełnienie zerem w dzacie

Cloud VPS
0 głosów
376 wizyt
pytanie zadane 12 marca 2019 w Java przez pionas0407 Gaduła (4,620 p.)

Witam,

Pisząc prostą klasę Time w Javie natrafiłem na pewien problem.

Chcę, aby funkcja toString zwracała format hh:mm:ss. 

Przykład:

01:13:07 -> dobrze

1:13:7 - > źle

Zrobiłem to bardzo nie efektywnie za pomocną warunków IF. Czy chce ktoś podpowiedzieć jak zrobić to w prosty sposób nie wplątując to instrukcji warunkowych :)?  

Dodaje kod aby nie było wątpliwości: 

private int hour;
private int minute;
private int second;

    public Time(int hour, int minute, int second) {
        if ((hour >= 0 && hour <= 23) && (minute >= 0 && minute <= 59) && (second >= 0 && second <= 59)) {
            this.hour = hour;
            this.minute = minute;
            this.second = second;
        } else {
            System.out.println("ERROR. hour = [0, 23], minute = [0, 59], second = [0, 59]");
        }
    }

public String toString() {
     return ?;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 12 marca 2019 przez Mateusz51 Nałogowiec (28,180 p.)
wybrane 12 marca 2019 przez pionas0407
 
Najlepsza
+2 głosów
odpowiedź 12 marca 2019 przez Tomek Sochacki Ekspert (227,490 p.)

Możesz użyć gotowych rozwiązań w Javie, dedykowanych do takich celów, np.:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class Main {

    public static void main(String[] args) {

        LocalDateTime date = LocalDateTime.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");

        System.out.println(date.format(formatter));

    }
}

 

komentarz 12 marca 2019 przez pionas0407 Gaduła (4,620 p.)
Dziękuje za odpowiedź, niestety w treści zadania jest napisane, że sekunda, minuta oraz godzina ma być zmienną typu int, i z tego ma powstawać godzina ;)
komentarz 12 marca 2019 przez Tomek Sochacki Ekspert (227,490 p.)
edycja 12 marca 2019 przez Tomek Sochacki
wg mnie totalnie bez sensu... nie spotkałem się jeszcze z polem które miałoby trzymać tylko czas, a nie cała datę albo timestamp... oczywiście, są takie jak najbardziej dostępne, nawet np. w bazach danych, ale ja wychodzę z założenia że jednak lepiej mieć zawsze nieco więcej informacji niż mniej... Ale to typowe w szkołach... nauczycielom wydaje się, że uczą tworzenia jakiś algorytmów itp. a tak naprawdę jest to g.. prawda... uczą żeby zapomnieć o dokumentacji i robić wsio na ifach :)
komentarz 12 marca 2019 przez pionas0407 Gaduła (4,620 p.)
haha bardzo trafny komentarz :)! To akurat nie nauczyciel zadał tylko trenuję Javę z tego zbioru zadań:

http://www3.ntu.edu.sg/home/ehchua/programming/java/j3f_oopexercises.html#zz-8.

Dziękuje za komentarz ;)!
komentarz 12 marca 2019 przez mbabane Szeryf (79,260 p.)

LocalDate i LocalDateTime ma takie metody fabryczne:

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#of-int-int-int-

https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html#of-int-int-int-int-int-int-int-

LocalDate.of(2019, 3, 12);
LocalDateTime.of(2019, 3, 12, 21, 26, 0, 0);

 

Podobne pytania

0 głosów
0 odpowiedzi 163 wizyt
pytanie zadane 27 grudnia 2018 w Java przez Piotr Kusnierkiewicz Użytkownik (670 p.)
0 głosów
1 odpowiedź 820 wizyt
pytanie zadane 19 lipca 2020 w Java przez msky Początkujący (250 p.)
+1 głos
3 odpowiedzi 1,430 wizyt
pytanie zadane 9 sierpnia 2016 w Java przez itcloud Gaduła (3,380 p.)

93,487 zapytań

142,423 odpowiedzi

322,773 komentarzy

62,908 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...