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.