Klasy, dziedziczenie i tablica rekordów

0

Witajcie, o ile podczas kompilacji program nie wykazuje błędów, o tyle w trakcie działania wywala ciągle ten sam błąd "null".

Mam osobne klasy:

public class osoba
{   String imie,nazwisko,miasto; int wiek, pesel;
}
public class pracownik extends osoba
{int zarobki;
}
public class pracownicyadministracyjni extends pracownik
{
 String wydzial; 
}
public class pracownicynaukowi extends pracownicyadministracyjni
{
  String tytul; 
}

Czyli 4 klasy które kolejno po sobie dziedziczą. (takie warunki zadania)

W klasie main fragment wygląda tak:

pracownicynaukowi Zbior[]  = new pracownicynaukowi[100];

if (file.exists())
     {
         System.out.println("Plik: "+nazwa +"  już istnieje!");
         RandomAccessFile plik = null;
         try { plik=new RandomAccessFile(file, "r"); }
         catch(FileNotFoundException e)
         { System.out.println("Brak pliku!"); return; }
         String line = ""; int tymcz = 0; int K = 1;
         
         try {
         while ( (line=plik.readLine()) != null )
         {
       if (tymcz==0) Zbior[K].imie=line; //tutaj wyskakuje blad
         if (tymcz==1) Zbior[K].nazwisko=line;
         if (tymcz==2) Zbior[K].wiek=Integer.parseInt(line);
         if (tymcz==3) Zbior[K].miasto=line;
         if (tymcz==4) Zbior[K].pesel=Integer.parseInt(line);
         
        if (tymcz==5) Zbior[K].zarobki=Integer.parseInt(line);
         
        if (tymcz==6) Zbior[K].tytul=line;
         
        if (tymcz==7) Zbior[K].wydzial=line;
      System.out.println(line);
   
      
         tymcz++;
         if (tymcz == 8) { tymcz =0; K++; System.out.println("Dodano osobe");}
        }
         plik.close();  
         System.out.println("Dane zostały wczytane");
         System.out.println("Wczytano " + (K) +" pracownikow");
         System.out.println("===================================================="); 
          }
          catch(IOException e) { System.out.println("Błąd wejścia"); return; }
       
        }  

Przy kopilacji nie pokazuje żadnych błędów a przy uruchomieniu programu zawsze wskazuje pogrubiony fragment z opisem
java.lang.NullPointerException: null

bardzo Was proszę o pomoc. Juz 2 godziny nad tym siedzę i naprawdę nie jestem w stanie sam sobie z tym poradzić.
za wszelką pomoc z góry dziękuję

0

Bo takie coś:

pracownicynaukowi Zbior[]  = new pracownicynaukowi[100];

NIE TWORZY żadnego pracownika naukowego. Tworzy tylko tablicę na takich pracowników i nic więcej. W c++ to by było równoznaczne z tablicą pustych wskaźników. Musisz sobie pracownika stworzyc jak chcesz coś z nim robić.

Zbior[K] = new pracownicynaukowi();
  1. Naucz się formatować kod! IDE robią to samodzielnie, skorzystaj z tego...
  2. czemu "pracownicynaukowi" a nie "PracownikNaukowy"?
  3. Zamiast "siedzieć 2 godziny" robiąc cholera-wie-co, proponuję ściągnąć dowolny kurs Javy / zaopatrzyć się w książkę i zacząć sie uczyć. Bo programowanie metodą prób i błędów nie jest wskazane.
0

Czy to jest może zadanie z Polibudy Wrocławskiej ?W8?

0

Tak, ciągle coś wyskakuje,jakieś problemy. Teraz, np, okazało się że wczytuje mi dane z pliku do array'a, ale nie zapamiętuje, tj podczas danej pętli można wywołać np. Zbior[2].imie; ale podczas kolejnej petli to samo wywolanie pokazuje null;
Zatem wciąż się staram...

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