Operacje na listach

0

Witam wskaże mi ktoś jak mogę zrobić, żeby działało? Po wielu próbach udało mi się zrobić tak, żeby program działał ale... pracownicy mają te same imiona i nazwiska. Wiem że kod z tej klasy jest do d**y więc proszę o pomoc w napisaniu odpowiedniego algorytmu bo nie mam pojęcia jak ma to wyglądać. Nie wiem Liste zapełnić w drugiej klasie żeby nie tworzyć obiektów cały czas nowych? Jak takie coś zrobić?

package ćw6;

import java.util.LinkedList;
import java.util.Random;

public class Pracownik extends File
{
	String Name;
	String LastName;
	int age;

	public Pracownik(String a, String b, int c)
	{
		this.Name = a;
		this.LastName = b;
		this.age = c;
	}

	static LinkedList<String> CreateListNames()
	{
		LinkedList<String> LinkedListNames = new LinkedList<>();
		LinkedListNames.addAll(File.ListNames);
		return LinkedListNames;
	}

	static LinkedList<String> CreateListSurnames()
	{
		LinkedList<String> LinkedListSurnames = new LinkedList<>();
		LinkedListSurnames.addAll(File.ListSurnames);  //ListNames i ListSurnames to sety z drugiej klasy
		return LinkedListSurnames;
	}

	static String getName()
	{
		return CreateListNames().removeLast();
	}

	static String getSurname()
	{
		return CreateListSurnames().removeLast();

	}

	static int getAge()
	{
		Random random = new Random();
		int age = random.nextInt(32) + 18;
		return age;
	}

	public static void main(String[] args)
	{
		try
			{
				File.file();
				Pracownik pracownik1 = new Pracownik(getName(), getSurname(), getAge());
				Pracownik pracownik2 = new Pracownik(getName(), getSurname(), getAge());
				Pracownik pracownik3 = new Pracownik(getName(), getSurname(), getAge());
				System.out.println(pracownik1.Name + ", " + pracownik1.LastName + ", " + pracownik1.age);
				System.out.println(pracownik2.Name + ", " + pracownik2.LastName + ", " + pracownik2.age);
				System.out.println(pracownik3.Name + ", " + pracownik3.LastName + ", " + pracownik3.age);
			} catch (Exception e)
			{
			}

	}
}


0

Za każdym razem przepisujesz tę statyczną listę z drugiej klasy a później wywołujesz removeLast, więc to nie przypadek, że masz ten sam wynik. Musisz albo usuwać elementy z tej statycznej listy, albo raz ją przepisać i później tamtej nie ruszać.

Na szybko:

public static void main(String[] args) {
        try {
            LinkedList<String> names = createListNames();
            LinkedList<String> surnames = createListSurnames();
            Pracownik pracownik1 = new Pracownik(names.removeLast(), surnames.removeLast(), getAge());
            Pracownik pracownik2 = new Pracownik(names.removeLast(), surnames.removeLast(), getAge());
            Pracownik pracownik3 = new Pracownik(names.removeLast(), surnames.removeLast(), getAge());
            System.out.println(pracownik1.name + ", " + pracownik1.lastName + ", " + pracownik1.age);
            System.out.println(pracownik2.name + ", " + pracownik2.lastName + ", " + pracownik2.age);
            System.out.println(pracownik3.name + ", " + pracownik3.lastName + ", " + pracownik3.age);
        } catch (Exception e) {
        }
    }

Radzę też używać małych liter na początku w nazwach zmiennych i metodach.

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