Axerr | 2021-02-17 10:25:18 UTC | #1
Cześć,
Aktualnie piszę aplikację w Javie, która ma za zadanie odliczać czas do najbliższej ustawionej godziny w pliku.
Niestety nie mam za bardzo pomysłu jak program miałby wybierać najbliższą godzinę.
Przyklad:
events:
aaa:
- "14:10"
- "14:20"
- "14:30"
- "17:10"
bbb:
- "06:59"
- "11:10"
- "15:33"
Aktualnie jest godzina 14:25:11
Wydarzenie aaa: pozostało: 0godz 4min 49sek
Wydarzenie bbb: pozostało: 1godz 8min 0sek
Macie jakieś pomysły jak można wykonać taki licznik?
Z góry dziękuję :)
anon26799942 | 2020-10-06 12:08:32 UTC | #2
Witaj :raisedhandwithfingerssplayed:
Czy mógłyś sprecyzować, co masz na myśli pisząć:
[quote=”Axerr, post:1, topic:16018”]
jak program miałby wybierać najbliższą godzinę
[/quote]
?
Dzięki :wink:
Kamil02167 | 2020-10-06 13:47:02 UTC | #3
Zapewne najbliższa od aktualnej, choć już pewnie nieaktualne po tylu dniach :thinking:
anon26799942 | 2020-10-06 16:52:40 UTC | #4
Aha, zajarzyłem :wink:
Aby zgetować godzinę z dwukropkiem, możesz od końca (lub początku :slightlysmilingface:) wstawić go “na siłę”. IMO lepszym sposobem byłoby coś jak poniżej:
loopConfigu -> if ([godzina bez dwukropka] == najwiekszaLiczba) -> return najwiekszaLiczba
Taki mam pomysł :)
Axerr | 2020-10-07 11:12:59 UTC | #5
[quote=”Kamil02167, post:3, topic:16018”]
nieaktualne po tylu dniach
[/quote]
O dziwo nadal aktuale po tylu dniach :slight_smile:
Czyli usunąć dwukropki z godzin, wywalić z listy liczby mniejsze niż obecna bez dwukropka i wziąć pierwszą liczbę z tej listy, tak?
A co w wypadku godziny po północy? Przykładowo teraz jest 23:58 a następna godzina to 00:04. 0004 jest mniejsze niż 2358 więc zostanie usunięte :frowning:
anon26799942 | 2020-10-08 14:36:40 UTC | #6
[quote=”Axerr, post:5, topic:16018”]
Czyli usunąć dwukropki z godzin, wywalić z listy liczby mniejsze niż obecna bez dwukropka i wziąć pierwszą liczbę z tej listy, tak?
[/quote]
Dokładnie :wink:
[quote=”Axerr, post:5, topic:16018”]
A co w wypadku godziny po północy? Przykładowo teraz jest 23:58 a następna godzina to 00:04. 0004 jest mniejsze niż 2358 więc zostanie usunięte :frowning:
[/quote]
Możesz przy getowaniu wartości z configu sprawdzać, czy zaczyna się od 00:, jeżeli tak to zamieniasz to na 24: i usuwasz dwukropek :D
Lepszą opcję jest zatem sprawdzanie, czy po poodrzucaniu wszystkich liczb nic nie zostało - jeżeli tak, to ustawiasz liczby od najmniejszej i bierzesz najmniejszą :wink: Tak przy okazji rozwiążesz problem, gdy nie ma już eventów w danym dniu :cryingcatface:
Pozdrawiam :wink:
xSeKaBo | 2020-10-09 17:30:00 UTC | #7
Po co kombinować jak można sortować?
http://www.java2s.com/Tutorials/Java/DataStructureHowto/Sort/Sortalistoftimestrings.htm
Axerr | 2020-10-08 05:53:30 UTC | #8
Tak właściwie to obydwie metody nie są najlepsze, bo obydwie sprowadzają się do porównywania całej listy godzin. Dzięki Wam za pomoc :slight_smile:
Axerr | 2020-10-09 17:31:16 UTC | #9
Ostatecznie przetestowałem obie metody i metoda, którą przedstawił @xSeKaBo wydaje się “lepsza”, ale nadal nie najlepsza. Dziękuję wszystkim za pomoc :)
system | 2021-02-17 10:31:43 UTC | #10
Ten temat został automatycznie zamknięty 32 dni po ostatnim wpisie. Tworzenie nowych odpowiedzi nie jest już możliwe.