Błąd z przekazywaniem wartości między funkcjami

0

Mam taki oto kod

package zad1;

import java.util.Scanner;

public class Firma {


	public static Pracownik[] nowiPracownicy() {

		int rozmiar = 0;
		Scanner scan = new Scanner(System.in);
		Pracownik[] prac = new Pracownik[4];

		while (rozmiar < prac.length) {
			prac[rozmiar] = new Pracownik();

			System.out.print("Imie:");
			prac[rozmiar].setImie(scan.next());

			System.out.print("Nazwisko:");
			prac[rozmiar].setNazwisko(scan.next());

			System.out.print("Stanowisko:");
			prac[rozmiar].setStanowisko(scan.next());
			rozmiar++;
		}
		scan.close();
		
		return prac;
		

	}

	public static void wyswietlPracownikow(Pracownik[] prac) {
		
		System.out.println(prac[0].getImie() +" "+ prac[1].getImie()+ " " + prac[2].getImie()+" " + prac[3].getImie()+" ");
		System.out.println(prac[0].getNazwisko() +" "+ prac[1].getNazwisko()+ " " + prac[2].getNazwisko()+" " + prac[3].getNazwisko()+" ");
		System.out.println(prac[0].getStanowisko() +" "+ prac[1].getStanowisko()+ " " + prac[2].getStanowisko()+" " + prac[3].getStanowisko()+" ");

	}

	public static void main(String[] args) {

		nowiPracownicy();
		//wyswietlPracownikow(Pracownik[] prac);  // tu problem

	}

}

Problem w tym że pojawia mi się błąd którego nie rozumiem. tutaj gdzie zakomentowane wiem że jest źle ale od początku. Program w wersji "main" działa. Chciałem go sobie podzielić na funkcje. No więc stworzyłem funkcję od dodawania pracownika która tam korzysta z set i chciałem wyświetlanie z funkcjami get. Funkcja od pracownikow i tutaj nie wiem czy dobrze rozumiem zwraca mi tablice prac zawierajaca pracownikow z ich imionami itd. Potem przekazuje to do funkcji wyswietlanie i tam mi to bedzie wyswietlac. Tylko jak to wywołać w main? Prosze o pomoc.

1

zwraca Ci ta tablice, ale do czego ja przypisujesz?
Czemu tworzysz nowy obiekt w drugiej funkcji? (wyswietlPrac)

1
        wyswietlPracownikow(nowiPracownicy());
3

Możesz przekazać,

Pracownik[] prac = nowiPracownicy();
wyswietlPracownikow(prac);  // tu nie ma problemu
2

@balu zacznij sobie przeglądać różne obiektowe kody, bo taki podział na te klasy itd... już na początku stwarza tylko problemy. Co jak będziesz chciał sobie stworzyć 2 firmy z różną liczbą pracowników? Zamiast męczyć się z tablicami lepiej od razu przeczytać o kontenerach. Chyba, że uczysz się póki co tylko funkcji bez obiektowości

import java.util.ArrayList;
import java.util.Scanner;

class Pracownik {
	private String imie, nazwisko, stanowisko;

	Pracownik(String imie, String nazwisko) {
		this.imie = imie;
		this.nazwisko = nazwisko;
	}

	void setStanowisko(String stanowisko) { this.stanowisko = stanowisko; }

	@Override
	public String toString () { return imie+" "+ nazwisko+" "+stanowisko; }
}

class Firma {
	private ArrayList<Pracownik> pracownicy = new ArrayList<Pracownik>();

	public void add(Pracownik pracownik) { pracownicy.add(pracownik); }

	@Override
	public String toString() {
		String ret = "";
		for(Pracownik p : pracownicy)
			ret += p + "\n";
		return ret;
	}
}

class PracownikSkaner {
	private Scanner scan;

	PracownikSkaner() { scan = new Scanner(System.in); }

	public Pracownik get() {
		String imie, nazwisko;
		System.out.println("Imie: ");
		imie = scan.next();
		System.out.println("Nazwisko: ");
		nazwisko = scan.next();
		Pracownik pracownik = new Pracownik(imie,nazwisko);
		System.out.println("Stanowisko: ");
		pracownik.setStanowisko(scan.next());
		return pracownik;
	}
}

public class Main {
    public static void main(String[] args) {
		Firma mojaFirma = new Firma();
		PracownikSkaner pracownikSkaner = new PracownikSkaner();
		for(int n = 4; n != 0; --n) {
			mojaFirma.add(pracownikSkaner.get());
		}
		System.out.println(mojaFirma);
    }
}
0

Po kolei po kolei Karolinko :D Najpierw uczę się od początku o klasach konstruktorach itd. potem dojdę do kolekcji itd. to będę ulepszał te programy.

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