Przekazywanie w parametrze tablicy obiektów przy wczytywaniu z pliku

0

Witam
Dopiero zaczynam zabawę z javą i mam problem przy wczytywaniu z pliku poprzez metodę której parametrem jest tablica obiektów, docelowo ma ona być dwuwymiarowa, ale póki co nie działa nawet 1D



package daneprac;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class Daneprac {
    public static void main(String[] args) throws IOException {
        Daneprac[] prac=new Daneprac[5];
        wczytaj("D:/prac.txt", prac);
  }
    String imie, nazwisko;
    int placa,dzial;
    char plec;
    Daneprac(String imie, String nazwisko, int placa, char plec, int dzial){
        this.imie=imie;
        this.nazwisko=nazwisko;
        this.dzial=dzial;
        this.placa=placa;
        this.plec=plec;
    }
    private static void wczytaj(String nazwa, Daneprac prac)throws IOException {
            BufferedReader plik2 = null;
        try {            
            plik2 = new BufferedReader(new FileReader(nazwa));
            String l = plik2.readLine();
            int i=0;
            while (l != null) {
                l=Daneprac.prac[i];
                l = plik2.readLine();
                i++;
            }
        } finally {
            if (plik2 != null) {
                plik2.close();
            }
        }
    
   

}
}
}

Mógłbym prosić o wskazówkę co robię tutaj źle?

0

To jak zwykle na początek powiedz gdzie według Ciebie jest błąd albo co kompilator rzuca. Tak od siebie zapytam, to ma być jakaś serializacja i wczytywanie obiektów z pliku ??. Po trzecie, zostaw main'a w spokoju i stwórz nową klasę Daneprac i w niej przetrzymuj wszystkie metody, pola, konstruktory itp. (żebyś już od początku uczył się dobrych reguł projektowania) a w main wykonuj tylko takie kwiatki jak robisz:

 Daneprac[] prac=new Daneprac[5];
        wczytaj("D:/prac.txt", prac);

Kod będzie dużoooo bardziej czytelny. Dalej robisz coś takiego:

Daneprac.prac[i]

ale nie masz w klasie Daneprac pola prac więc to tu pewnie masz problem. Możesz się w ten sposób odwołać do pól takich jak np. Daneprac.imie, Daneprac.nazwisko itd. ale nie do pola, które nie istnieje. Jeszcze jedna ważna sprawa, wszystkie pola takie jak imie, nazwisko, plec itd. zdefiniuj jako private, wygeneruj dla nich gettery i settery i odnoś się do nich właśnie za pomocą getterów i setterów ale to tak na przyszłość. Mam nadzieje, że nie stworzyłem Ci więcej problemów :P

A i jeszcze jedno, jak chcesz wykorzystywać tablicę w metodzie to powinno być to zdefiniowane tak:

wczytaj(String nazwa, Daneprac [] prac)

Aż się dziwie, że IDE Ci tego nie podświetla. Używasz jakiegoś eclipse albo Intelij czy zwykły notatnik ?? :P

1 użytkowników online, w tym zalogowanych: 0, gości: 1