Witam, robie zadanie z programowania dotyczace listy zamowien, przy włączeniu pojawia mi się to:
Chleb; 3,50 zł; 1 szt; 3,50 zł
Cukier; 4,00 zł; 3 szt; 12,00 złException in thread "main" java.lang.NullPointerException
at Zamowienie.dodajPozycje(Zamowienie.java:15)
at Main.main(Main.java:11)
Process finished with exit code 1
Nie wiem już jaka jest tego przyczyna próbuje i nie mogę tego rozkminić. Wstawiam kod:
public class Pozycja {
private String nazwaTowaru;
private int ileSztuk;
private double cena;
Pozycja(String nazwaTowaru, int ileSztuk, double cena){
this.nazwaTowaru = nazwaTowaru;
this.ileSztuk = ileSztuk;
this.cena = cena;
}
Pozycja(Pozycja p){
this.nazwaTowaru = p.nazwaTowaru;
this.ileSztuk = p.ileSztuk;
this.cena = p.cena;
}
public String getNazwaTowaru(){
return this.nazwaTowaru;
}
public double obliczWartosc(){
return this.ileSztuk*this.cena;
}
public String toString(){
return nazwaTowaru + "; " + String.format("%.2f",cena) + " zł; " + ileSztuk + " szt; " +
String.format("%.2f",obliczWartosc()) + " zł";
}
}
public class Zamowienie {
public Pozycja[] pozycje;
private int ileDodanych;
private int maksRozmiar;
Zamowienie(){
this.maksRozmiar=10;
this.ileDodanych=0;
this.pozycje = new Pozycja[this.maksRozmiar];
}
Zamowienie(int maksRozmiar){
this.maksRozmiar=maksRozmiar;
}
public void dodajPozycje(Pozycja p) {
if(this.pozycje.length <= maksRozmiar){
this.pozycje[ileDodanych] = new Pozycja(p);
ileDodanych++;
}
}
double obliczWartosc(){
double lacznie=0.0;
for(int i=0;i<ileDodanych;i++){
lacznie+=pozycje[i].obliczWartosc();
}
return lacznie;
}
public String toString(){
String napis = "\nZamówienie\n";
for (int i=0; i<ileDodanych; i++){
napis+=(pozycje[i].toString()+"\n");
}
napis+="Razem: " +String.format("%.2f",obliczWartosc()+" zł");
return napis;
}
}
public class Main{
public static void main(String [] args) {
Pozycja p1 = new Pozycja("Chleb", 1, 3.5);
System.out.println(p1);
Pozycja p2 = new Pozycja("Cukier", 3, 4);
System.out.print(p2);
Zamowienie z = new Zamowienie(10);
z.dodajPozycje(p1);
z.dodajPozycje(p2);
System.out.println(z);
}
}
Z góry wielkie dzięki!
próbowałem się pobawić, ale dalej nie działa
co konkretnie zrobiłeś? powinieneś inicjalizować niezależnie od tego, którego konstruktora używasz