Witam.
Javy uczę się od niedawna. Chcąc się zabrać poważnie do nauki nabyłem książkę Core Java 2 Podstawy. Natknąłem się właśnie na mały problem i mam nadzieję, ze ktoś pomoże mi to rozwiązać/zrozumieć.
import java.text.NumberFormat;
import java.util.*;
public class TestPracownika {
public static void main(String[] args) {
Pracownik[] obsluga = new Pracownik[4];
obsluga[0] = new Pracownik ("Jan", "Kowalski", 1000, 2010, 3, 5);
obsluga[1] = new Pracownik ("Anna", "Kowalska", 2000, 2011, 5, 6);
obsluga[2] = new Pracownik ("Rafał", "Kowalski", 3000, 2010, 5, 30);
obsluga[3] = new Pracownik ("Agata", "Kowalska", 1500, 2012, 6, 28);
for (int i = 0; i < obsluga.length; i++) {
obsluga[i].podniesPensje(10);
}
for (int i = 0; i < obsluga.length; i++) {
Pracownik p = obsluga[i];
double kwota = p.pobierzPensje();
NumberFormat kwota2 = NumberFormat.getCurrencyInstance();
String kwota3 = kwota2.format(kwota);
System.out.println((i+1) + ":\t " + p.pobierzImie() + "\t" + p.pobierzNazwisko() + "\t" + /*p.pobierzPensje()*/kwota3 + "\t" + p.wypiszDzienZatrudnienia());
}
}
}
class Pracownik {
public Pracownik(String i, String n, double p, int rok, int miesiac, int dzien) {
imie = i;
nazwisko = n;
pensja = p;
GregorianCalendar kalendarz = new GregorianCalendar();
dzienZatrudnienia = kalendarz.getTime();
}
public String pobierzImie() {
return imie;
}
public String pobierzNazwisko() {
return nazwisko;
}
public double pobierzPensje() {
return pensja;
}
public void podniesPensje(double oProcent){
double podwyzka = pensja * oProcent / 100;
pensja = pensja + podwyzka;
}
public Date wypiszDzienZatrudnienia() {
return dzienZatrudnienia;
}
private final String imie;
private final String nazwisko;
private double pensja;
private Date dzienZatrudnienia;
}
Wynikiem programu jest to:
1: Jan Kowalski 1 100 zł Thu Jun 28 2056 CEST 2012
2: Anna Kowalska 2 200 zł Thu Jun 28 2056 CEST 2012
3: Rafał Kowalski 3 300 zł Thu Jun 28 2056 CEST 2012
4: Agata Kowalska 1 650 zł Thu Jun 28 2056 CEST 2012
Z tego co rozumiem z książki to powinno wyświetlić mi podane w tablicy obsluga
daty zatrudnienia pracowników. Program jednak wyświetla mi wszędzie datę ostatniej kompilacji kody.
Dlaczego tak się dzieję?
Bardzo bym prosił o nie wieszanie psów na mnie, jest to mój pierwszy post na tym forum ;-)
Pozdrawiam.