Po formatiranom kodu vidi se da je radio u običnom tekstualnom editoru pa da je kompajlirao/pokretao ručno. Ja ne vidim nikakav razlog da se to radi. Pojedini autori navode da je to dobro da bi se uvežbala sintaksa. Ja se ne slažem sa time, pre sam za to da čovek radi što više primera u razvojnom okruženju nego da gubi vreme da ručno kompajlira program. U početku kad pišeš ovakve jednostavne programe nemaš puno problema ali kad krene debagovanje koda onda je rad u konzoli noćna mora. Znači toplo preporučujem da uzmeš neki editor, bilo koji, ja koristim Eklipsu.
Tvoj zadatak je imao grešaka zbog ovoga što je Dule naglasio, ispravljen izgleda ovako:
Code:
/*
FileName: EmployeePayroll.java
*/
public class EmployeePayroll{
private String firstName;
private String lastName;
private int id;
private int hoursWorked;
private double payRate;
private double grossPay;
private double netPay;
public EmployeePayroll(){
firstName = "";
lastName = "";
id = 0;
hoursWorked = 0;
payRate = 0;
grossPay = 0;
netPay = 0;
}
public EmployeePayroll(double netPay, double grossPay, double payRate, int id, int hoursWorked, String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
this.id = id;
this.hoursWorked = hoursWorked;
this.payRate = payRate;
this.grossPay = grossPay;
this.netPay = netPay;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setID(int id) {
this.id = id;
}
public void setHoursWorked(int hoursWorked) {
this.hoursWorked = hoursWorked;
}
public void setPayRate(double payRate) {
this.payRate = payRate;
}
public void setGrossPay(double grossPay) {
this.grossPay = grossPay;
}
public void setNetPay(double netPay) {
this.netPay = netPay;
}
public String getFirstName(){
return firstName;
}
public String getLastName(){
return lastName;
}
public int getID(){
return id;
}
public int getHoursWorked(){
return hoursWorked;
}
public double getPayRate(){
return payRate;
}
public double getGrossPay(){
return grossPay;
}
public double getNetPay(){
return netPay;
}
}
E sad hteo bi samo da ti malo pojasnim. Znači greška ti je bila to što si pokušavao da dodeliš vrednost atributu klase koji ne postoji. Na primer imao si HoursWorked a trebalo je hoursWorked. Napominjem te da je Java case-sensitive tj. da je osetljiva na mala i velika slova. Na primer work, Work i WORK su tri razlicite promenljive.
Dalje postoje dva stila pisanja seter metoda, na primer da staviš hoursWorked da bude parametar metode i da onda dodeljujes atributu klase vrednost na sledeći način:
Code:
this.hoursWorked=hoursWorked
this je ključna reč jezika i sadrži referencu na tekuću klasu u kojoj se ovaj kod nalazi. U našem primeru to bi bilo isto kao:
EmployeePayroll.hoursWorked
Drugi nacin je da staviš kao parametar recimo h, pa da dodelu vrednosti odradiš na sledeći način:
Code:
hoursWorked=h
Izvini možda te malo udavih ali sam hteo da ti objasnim da bolje razumeš.
Inače ja više volim ovo sa ključnom rečju this.