for(int i=0;i<3;i++)
{
pracownik[i].imie = odczyt.nextLine();
pracownik[i].nazwisko = odczyt.nextLine();
pracownik[i].wiek = odczyt.nextInt();
}
W każdej iteracji pętli dopisujesz wartości pewnych składowych obiektu pracownik, który nie istnieje. Obiekt pracownik[i] musi być wpierw zainicjowany za pomocą new Pracownik();. Zapytasz co robi w takim razie wiersz:
Pracownik[] pracownik = new Pracownik[3];
Tutaj słowo kluczowe new odnosi się do stworzenia nowej tablicy i przypisania referencji do niej zmiennej pracownik. Tablica ta jest jednak wciaż pusta (wypełniona nullami).