Nie przekazuje parametru

0
public class Pracownicy {
    
    String Imie;
    String Nazwisko;
    String Posada;
    int RokUrodzenia;
    int ZatrudnionyOd;
    int Zarobki;
    int u;
    
    Scanner in = new Scanner(System.in);
    
    Pracownicy()
    {
       
    }
    
    
    Pracownicy(String I, String N, String P, int RU, int ZO, int Z)
    {
        Imie = I;
        Nazwisko = N;
        Posada = P;
        RokUrodzenia = RU;
        ZatrudnionyOd = ZO;
        Zarobki = Z;
    }
    
    public void Show(Pracownicy[] tab)
    {
        System.out.printf("%15s %15s %15s %15s %15s %15s %n","Imie","Nazwisko","Posada","Rok Urodzenia",
        "Zatrudniony od", "Zarobki");
        
        System.out.println();
        
        for (int i = 0; i < Pracownicy.LastEmpty(tab); i++)
        {
            System.out.printf("%15s %15s %15s %15s %15s %15s %n", tab[i].Imie,tab[i].Nazwisko,
            tab[i].Posada,tab[i].RokUrodzenia,tab[i].ZatrudnionyOd,tab[i].Zarobki);
        }
        
        System.out.println("\n1 - Dodaj nowego pracownika 2 - Sortuj po imieniu "
        + " 3 - Pokaz srednie zarobki"
        + " 4 - Znajdz pracownika z najwiekszym stazem" + " 5 - Podwyzka pensji");
        
        u = in.nextInt();
        
        switch(u)
        {
            case 1:
            Add(tab);
            case 2:
            Arrays.sort(tab, 0, Pracownicy.LastEmpty(tab), Pracownicy.NameComparator);
            Show(tab);
            case 3:
            SrednieZarobki(tab);
            case 4:
            LongestIntership(tab);
        }
    }
    
    static int LastEmpty(Pracownicy[] tab)
    {
        int j = 0;
        for (int i = 0; i < tab.length; i++)
        {
            if(tab[i] == null)
            {
                j = i;
                break;
            }
        }
        return j;
    }
    
    public void Add(Pracownicy[] tab)
    {
        System.out.println("Imie: ");
        Imie = in.next();
        System.out.println("Nazwisko: ");
        Nazwisko = in.next();
        System.out.println("Posada: ");
        Posada = in.next();
        System.out.println("Rok Urodzenia: ");
        RokUrodzenia = in.nextInt();
        System.out.println("Zatrudniony od: ");
        ZatrudnionyOd = in.nextInt();
        System.out.println("Zarobki: ");
        Zarobki = in.nextInt();
        tab[Pracownicy.LastEmpty(tab)] = new Pracownicy(Imie, Nazwisko, Posada, RokUrodzenia,
        ZatrudnionyOd, Zarobki);
        Show(tab);
    }
    
    
    public static Comparator<Pracownicy> NameComparator = new Comparator<Pracownicy>()
    {
        
        public int compare(Pracownicy prac1, Pracownicy prac2)
        {
            return prac1.Imie.compareTo(prac2.Imie);
        }
        
    }; 
public class Glowna {
    
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int i;
        
        Pracownicy test = new Pracownicy();
        Pracownicy pracownicy[] = new Pracownicy[25];
        
        pracownicy[0] = new Pracownicy("Jano", "Aaaa", "Miotla", 1990, 2005, 3000);
        pracownicy[1] = new Pracownicy("Michau", "Bbbbb", "Lopata", 1969, 2001, 2500);
        pracownicy[2] = new Pracownicy("Krzychu", "Cccc", "Kiero", 1999, 2012, 3200);
        pracownicy[3] = new Pracownicy("Tomex", "Eeee", "HR", 1993, 2008, 3900);
        pracownicy[4] = new Pracownicy("Jaca", "Dddd", "Zastepca", 1994, 2007, 4000);

        test.Show(pracownicy);
        
        
        System.out.println("\n1 - Dodaj nowego pracownika 2 - Sortuj po imieniu "
        + " 3 - Pokaz srednie zarobki"
        + " 4 - Znajdz pracownika z najwiekszym stazem" + " 5 - Podwyzka pensji");
        //6 - Eksport do pliku
      
    }
    
}
 

Aplikacja przechowuje dane pracowników. Kiedy z menu wybiorę punkt pierwszy (czyli dodaj pracowników) to dodaje prawidłowo, jednak gdy następnie wybiorę punkt drugi - sortowanie po imieniu to sortuje tylko tych pracowników, których dodałem w klasie Glowna. Tych dodanych podczas działania programu nie bierze pod uwagę, czyli nawet jeżeli dodam kogoś o imieniu aaaa to i tak będzie on na samym końcu. Wygląda to tak jakby parametr

Pracownicy.LastEmpty(tab)

przekazany do arrays.sort był ciągle równy 5, jednak nie jest, bo jak wyświetlam jego wartość w programie po każdym dodaniu pracownika to prawidłowo zwiększa się o 1. Proszę o pomoc.

0

Algorytm nie działał jak trzeba gdy imię wpisałem z małej litery. Gdy wpiszę z dużej, działa jak należy.

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