Witam, od niedawna uczę się Javy. Aktualnie zacząłem wchodzić w obiekty i mam problem z ustawieniem pol obiektu. tzn mam problem z przypisaniem do tablicy obiektów klasy argumentów sczytanych z klawiatury
import java.util.*;
public class Pracownik_test {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Podaj liczbe pracownikow w firmie: ");
int n = in.nextInt();
Pracownik [] kadra = new Pracownik[n];
for( int i =0;i<n;i++)
{
System.out.print("Podaj Imie i nazwisko pracownika: ");
String temp1 = in.nextLine();
System.out.print("Podaj wysokość płacy: ");
double temp2 = in.nextDouble();
System.out.print("Podaj rok zatrudnienia");
int temp3=in.nextInt();
System.out.print("Podaj miesiac zatrudnienia");
int temp4=in.nextInt();
System.out.print("Podaj dzien zatrudnienia");
int temp5=in.nextInt();
kadra[i] = new Pracownik(temp1,temp2,temp3,temp4,temp5);//Tu jest problem
}
for ( Pracownik x:kadra)
{
System.out.println("Czy podnieść place dla "+x.getDaneOs()+" ?");
String odp=in.next();
if(odp.equals("tak"))
{
System.out.print("O ile procent podnieść płace? : ");
double raise=in.nextDouble();
x.setPlaca(raise);
}
}
for (Pracownik x:kadra)
{
System.out.printf("Dane Osobowe = "+x.getDaneOs()+" Płaca : "+x.getPlaca()+" Zatrudniony : "+x.getDataZatrudnienia());
}
}
class Pracownik
{
private String imNaz;
private double placa;
private Date dataZatrudnienia;
private static int nextId=1; // oraz tutaj
private int Id;
public Pracownik(String n,double p,int rok,int miesiac,int dzien)
{
imNaz=n;
placa=p;
GregorianCalendar kalendarz = new GregorianCalendar(rok,miesiac-1,dzien);
dataZatrudnienia=kalendarz.getTime();
Id=setId();
}
public String getDaneOs()
{
return imNaz;
}
public double getPlaca()
{
return placa;
}
public Date getDataZatrudnienia()
{
return dataZatrudnienia;
}
public void setDaneOs(String dane)
{
imNaz=dane;
}
public void setPlaca(double kasa)
{
placa=kasa;
}
public void setDataZatrudnienia(int data1,int data2,int data3)
{
GregorianCalendar przypis = new GregorianCalendar(data1,data2-1,data3);
dataZatrudnienia=przypis.getTime();
}
public void setPodwyzka(double r)
{
double podwyzka= (placa*r)/100;
placa+=podwyzka;
}
public int setId()
{
Id=nextId;
nextId++;
return nextId;
}
}
}
Oto cały kod programu, a wywala mi bląd przy : kadra[i] = new Pracownik(temp1,temp2,temp3,temp4,temp5); oraz przy ustawianiu statycznej prywatnej zmiennej nextId. Możecie mi wyjaśnić dlaczego nie mogę w ten sposób utworzyć nowego obiektu w tablicy? Nie rozumiem jeszcze wszystkich aspektów programowania obiektowego także bardzo prosze o wyrozumialość.
EDIT: To jest blad pojawiajacy sie przy kompilacji.
No enclosing instance of type Pracownik_test is accessible. Must qualify the allocation with an enclosing instance of type Pracownik_test (e.g. x.new A() where x is an instance of Pracownik_test).
at Pracownik_test.main(Pracownik_test.java:21)