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, botów: 0