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

problem z odczytywaniem danych

Object Storage Arubacloud
0 głosów
105 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 (154,860 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ź 112 wizyt
pytanie zadane 5 listopada 2020 w Java przez sobussss Początkujący (350 p.)
0 głosów
1 odpowiedź 106 wizyt
pytanie zadane 8 maja 2018 w PHP przez Browarnik123 Użytkownik (830 p.)
0 głosów
1 odpowiedź 210 wizyt
pytanie zadane 23 lipca 2020 w Java przez sobussss Początkujący (350 p.)

92,677 zapytań

141,581 odpowiedzi

320,061 komentarzy

62,039 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...