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

problem z odczytywaniem danych

Aruba Cloud VPS - 50% taniej przez 3 miesiące!
0 głosów
157 wizyt
pytanie zadane 5 listopada 2020 w Java przez sobussss Początkujący (350 p.)

Witam, jak mogłbym udoskonalic program , aby kazda kolumne odzielona przecinkiem wpisac do innej listy(badz tablicy). Dane odczytywane sa z pliku, w taki sposob:

Jan, Kowalski, 2100, M, 3

Agnieszka, Cuber, 2900, K, 3

Tomasz, Nowak, 1500, M , 4

Adam, Nowak, 1100, M, 4

Sylwia, Zych, 2100, K, 3 Beata, Dudek, 1900, K, 4

ArrayList<String> listaImion=new ArrayList<>();
ArrayList<String> listaNazwisk=new ArrayList<>();
ArrayList<String> listaPlci=new ArrayList<>();
ArrayList<Integer> listaPlacy=new ArrayList<>();
ArrayList<Integer> listaDzialu=new ArrayList<>();
while(scanner.hasNext()){
  linia=scanner.nextLine();
  String[] tabela=linia.split(","));
}
komentarz 14 listopada 2020 przez sobussss Początkujący (350 p.)

@tangarr,powiem tak, nie dziala ten sposob, poniewaz w kazdej zmiennej jest zapisany tylko jeden, ostatni rekord. Chyba, ze jest to spowodowane nie wywolaniem przeze mnie obiektu typu Osoba i chcialbym,a by ten program byl napisany bez dodatkowej klasy.

1 odpowiedź

0 głosów
odpowiedź 5 listopada 2020 przez tangarr Mędrzec (155,140 p.)

Zamiast listy dla każdego pola lepiej stwórz klasę (ala strukturę) i utwórz jedną listę. W ten sposób na pewno nie pogubisz się na indeksach.

class Osoba {
    public string imie;
    public string nazwisko;
    public string plec; // może nawet enum zamiast stringa
    public int placa;
    public int dzial;
}

ArrayList<Osoba> = new ArrayList<Osoba>();
while (scaner.hasNext()) {
    string linia = scaner.nextLine();
    string [] tabela = linia.split(",");
    if (tabela.length != 5) // zła ilość pól
        break; // lub wyjątek
    string imie = tabela[0].trim(); // usuwamy spacje
    string nazwisko = tabela[1].trim();
    string plec = tabela[2].trim();
    int placa = Integer.parseInt(tabela[3].trim());
    int dzial = Integer.parseInt(tabela[4].trim());

    // przed dodaniem do listy możesz sprawdzić poprawność danych
    
    // tworzenie obiektu klasy Osoba
    // inicjalizacja pól
    // dodanie do listy
}

 

komentarz 5 listopada 2020 przez sobussss Początkujący (350 p.)
Dziekuje bardzo.

Podobne pytania

0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 5 listopada 2020 w Java przez sobussss Początkujący (350 p.)
0 głosów
1 odpowiedź 142 wizyt
pytanie zadane 8 maja 2018 w PHP przez Browarnik123 Użytkownik (830 p.)
0 głosów
1 odpowiedź 377 wizyt
pytanie zadane 23 lipca 2020 w Java przez sobussss Początkujący (350 p.)

93,174 zapytań

142,185 odpowiedzi

321,970 komentarzy

62,503 pasjonatów

Advent of Code 2024

Top 15 użytkowników

  1. 1157p. - dia-Chann
  2. 1139p. - Łukasz Piwowar
  3. 1131p. - CC PL
  4. 1126p. - Łukasz Eckert
  5. 1118p. - Tomasz Bielak
  6. 1104p. - Michal Drewniak
  7. 1083p. - Marcin Putra
  8. 1078p. - rucin93
  9. 1071p. - rafalszastok
  10. 1054p. - Adrian Wieprzkowicz
  11. 1047p. - Piotr Aleksandrowicz
  12. 1037p. - Michał Telesz
  13. 1023p. - Mariusz Fornal
  14. 1017p. - Mikbac
  15. 1005p. - ssynowiec
Szczegóły i pełne wyniki

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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...