Obiekty w Java i wartość null

0

Witam, mam pewien problem a dokładniej stworzyłem obiekt , jak widać są trzy funkcje , jedna prosi użytkownika od podanie od jakiej listy ma zacząć do której listy. Drugi wpisuje dane a trzeci je wypisuje. Ogólnie program w zasadzie działa bo nie wywala błędu ale program kończy się wartościami null. Macie jakieś sugestie które umożliwiły by naprawić ten błąd? A może w ogóle inaczej powinienem to napisać?

import java.util.Scanner;

class Praca
{
    int  Pracownicy[] = new int[30];
    String imie[] = new String[30];
    String nazwisko[] = new String[30];
    int wiek[] = new int[30];


}

public class PoleKwadrat {
    private static Praca Pracownik()
    {
        Praca pracownik = new Praca();
        return pracownik;
    }
    public static void Od_do()
    {
        Scanner from = new Scanner(System.in);
        Scanner to = new Scanner(System.in);
        System.out.println("Podaj odkąd zacząć wprowadzać(1-30)?");
        int start = from.nextInt();
        while(start <=0 &  start >30)
        {
            System.out.println("Wprowadź dobrą liczbę!!!");
            start = from.nextInt();
        }
        System.out.println("Podaj dokąd wprowadzić(1-30)?");
        int stop = to.nextInt();
        while((stop <=0 & stop >30) || (stop < start))
        {
            System.out.println("Podaj poprawną liczbę");
            stop = to.nextInt();
        }
        Wpisz(start,stop);



    }
    public static void Wpisz(int start, int stop)
    {
       Pracownik();
        for(int i = (start-1); i <=(stop-1);i++)
        {

            Scanner name = new Scanner(System.in);
            Scanner surname = new Scanner(System.in);
            Scanner age = new Scanner(System.in);

            Pracownik().Pracownicy[i]= (i+1);
            System.out.println("Podajesz dane dla pracownika nr" + (i+1));
            System.out.println("Podaj imię");
            String imie = name.nextLine();
            Pracownik().imie[i] = imie;
            System.out.println("Podaj nazwisko");
            String nazwisko = surname.nextLine();
            Pracownik().nazwisko[i] = nazwisko;
            System.out.println("Podaj wiek");
            int wiek = age.nextInt();
            Pracownik().wiek[i] = wiek;
        }
        Wypisz(start,stop);

    }
    public static void Wypisz(int start, int stop)
    {
       Pracownik();
        for(int i=(start-1);i <=(stop-1);i++)
        {

            System.out.println("Pracownik Nr " + (i+1) + ":");
            System.out.println("Imię: " + Pracownik().imie[i]);
            System.out.println("Nazwisko: " + Pracownik().nazwisko[i]);
            System.out.println("Wiek: " + Pracownik().wiek[i]);

        }
    }
    public static void main(String[] args)
    {
       Od_do();
    }
}


A wynik jest następujący
Przechwytywanie.PNG:
Wygląda to tak jakby mimo tego obiekt nie przyjmował wartości podanych przez użytkownika.
Z góry wielkie dzięki!

4

Nic w tym kodzie nie ma zadnego sensu. Musisz to skasować i napisać jeszcze raz. Zacznij od zrobienia klasy Pracownik która trzyma takie rzeczy jak imie czy nazwisko i potem zrób tablicę (albo lepiej listę...) pracowników a nie jakieś osobne tablice na imiona i na nazwiska.
Następnie stwórz to RAZ a nie ze non stop wołasz Pracownik() które tworzy ci nowy zestaw tablic.

2

Ja tylko dodam, że jak już będziesz pisać od nowa, to:
Te liczne skanery też nie są potrzebne.
To deklarowanie jednych metod w drugich metodach też prowadzi do strasznego bajzlu.
Krawiectwo to np obiekt typu Praca. Pracownik nie może być "pracą".

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