Wpis z mikrobloga

#naukaprogramowania #java

Hej, mam pytanie. Robię zadanko które polega na wczytaniu z pliku tekstowego po przecinku kontaktu czyli imie,nazwisko,wiek w formacie yyyy-mm-dd, opcjonalnie numer telefonu,

No to zrobiłem skaner do zczytywania tego, dam to do ArrayList

i mam teraz wypisać ilość użytkowników i najstarszego z nich z telefonem i do tego porobić testy.

Pytanie jak dokładnie ma to wyglądać, tj. jak policzyć liczbę tych wczytanych obiektów i jak to wypisać, plus jak zamienić datę urodzenia na liczenie wieku? SimpleDateFormat da radę czy kombinować z innymi bibliotekami?
  • 15
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@dzeksondzekson: Zrób sobię klasę, w której będziesz miał te wszystkie atrybuty. Potem zrób ArrayList i ładując dane linia po linii twórz sobie te obiekty i ładuj do tej listy. lista.size() to będzie ilość użytkowników, a najstarszy sobie wiekiem to sobie poiterujesz po tej liście i znajdziesz maxa. Data do timestampu i sprawdzasz który jest najmniejszy
  • Odpowiedz
@dzeksondzekson: to juz lepiej wrzucic do sortowanej kolekcji (treeset) po wieku (jako ze wiek musisz obliczac to w comparatorze sobie go cache'uj). Pozniej bierzesz first()/last() i to bedzie najstarszy/najmlodszy
  • Odpowiedz
@Kuriozal: @asunez: @Algeroth: Sorry ze wołam każdego, ale mam takie coś

https://pastebin.com/HcQ3SxKG

I jak to sobie testuje to mi nie zczytuje każdą linię osobno, więc mam na każdym polu mi wpisuje całą linię zamiast jedno pole, nie wiem jak tutaj zrobić sensowny delimiter czy split żeby to miało ręce i nogi w stosunku do konstruktora wygenerowanego przez IDE

Sorry jeśli piszę mało sensownie, ale mam plik
  • Odpowiedz
@Algeroth: stwierdziłem że najprościej będzie przeiterować przez pętlę for czyli coś takiego

for (User dataUrodzenia : list) {
}

Tylko nie mam pojęcia jak zrobić logikę tego, bo generalnie lista ostatecznie ma wypisywać wiek a nie datę urodzenia, i nie wiem za bardzo jak to rozwiązać w kontekście tego, że wiek ma być sprawdzany też najstarszy ale z telefonem, tzn. muszę jakoś uwzględnić na stringu z numerem telefonu, żeby mógł
  • Odpowiedz
@dzeksondzekson: przeiterować pętlą for* lub przeiterować listę*

Zobacz co się dzieje w tym forze co napisałeś. Bierzesz listę, i latasz po każdym userze jaki jest w tej liście.
Błędnie nazwałeś usera nazwą dataUrodzenia. To jest Twój user a nie tylko data urodzenia. Aby mieć tą date urodzenia musisz zrobić coś w stylu user.dataUrodzenia ( w twoim przypadku dataUrodzenia.dataUrodzenia). Zrób sobie obiekt User najstarszyUser, i idąc po tej liście w tym forze, zrób tak:
1) jeśli najstarszyUser jest nullowy to najstarszyUser = obecnyUser.
2) jeśli nie jest nullowy, to sprawdzasz datę urodzenia bieżącego usera i porównujesz go z tym najstarszyUser. Jeśli jest starszy,to przypisujesz
  • Odpowiedz
User najstarszyUser = null;


@dzeksondzekson: deklaracje najstarszyUser = null przenieś poza pętlę. Tak samo System.out.println również tylko na dole po za pętlę. W tej chwili za każdym razem robisz obiekt User najstarszyUser i wypisujesz sobie bieżącego. Przez co istota problemu nie zostaje spełniona.
  • Odpowiedz