• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Java, Zadanie - Zamówienia

VPS Starter Arubacloud
0 głosów
403 wizyt
pytanie zadane 7 stycznia 2021 w Java przez Patryk2001 Początkujący (470 p.)

Cześć, aktualnie piszę zadanie dotyczące zamówień, na pewnym etapie natknąłem się na pewien problem, tzn. wyskakuje mi błąd wskazujący na linijkę związaną z dodawaniem obiektów do tablicy, ale za bardzo nie wiem o co chodzi, dlatego tu jestem :P. Program składa się z 2 klas Zamówienie oraz Pozycja. Oto kod:

Klasa Pozycja

package zamówienie;

public class Pozycja {
    
    String nazwaTowaru;
    int ileSztuk;
    double cena;
    static int IloscPozycji = 0;
    
    Pozycja(String nazwaTowaru, int ileSztuk, double cena)
    {
        this.nazwaTowaru = nazwaTowaru;
        this.ileSztuk = ileSztuk;
        this.cena = cena;
        IloscPozycji++;
    }
    
    public double obliczWartosc()
    {
        return (ileSztuk * cena);
    }
    
    
    public String toString1()
    {
        String text = nazwaTowaru + "    " + cena + " zł" + ileSztuk + " szt.    " +    obliczWartosc() + " zł";
        return text;
    }

    
}

Klasa Zamówienie:

package zamówienie;

public class Zamówienie {

    int ileDodanych = 0;
    int maksRozmiar;
    Pozycja pozycje[] = new Pozycja[maksRozmiar];
    
    public Zamówienie()
    {
        maksRozmiar = 10;
    }
    
    public Zamówienie(int liczba)
    {
        maksRozmiar = liczba;
    }
    
    public void dodajPozycje(Pozycja p)
    {
        pozycje[ileDodanych] = p;
        ileDodanych++;
    }
    
    public double obliczWartosc()
    {
        int suma = 0;
        for(int i=0; i< ileDodanych; i++)
        {
            suma += pozycje[i].obliczWartosc();
        }       
        return suma;
    }
    
    
    public String toString1()
    {
        String text = "";
        for(int i=0; i<ileDodanych;i++)
        {         
            text += (pozycje[i].toString1() + "\n");
        }
        
        return text;
    }
    
    
    public static void main(String[] args) {
        
          Pozycja p1 = new Pozycja("Deska",4, 4.50);
          Pozycja p2 = new Pozycja("Meble",4, 4.50);
          Pozycja p3 = new Pozycja("Ciasto",4, 4.50);
        
          Zamówienie Z1 = new Zamówienie();
        
          Z1.dodajPozycje(p1);
          Z1.dodajPozycje(p2);
          Z1.dodajPozycje(p3);
        
          System.out.println(Z1.obliczWartosc());
        
    }
    
}

Bład, który wyskakuję brzmi następująco:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
    at zamówienie.Zamówienie.dodajPozycje(Zamówienie.java:21)
    at zamówienie.Zamówienie.main(Zamówienie.java:56)

Bardzo proszę o pomoc, dzięki !!!

1 odpowiedź

+1 głos
odpowiedź 7 stycznia 2021 przez tangarr Mędrzec (155,080 p.)
wybrane 7 stycznia 2021 przez Patryk2001
 
Najlepsza
Tablica pozycje jest tworzona zanim przypiszesz wartość do zmiennej maksRozmiar.
Przypisz prawidłową wartość bezpośrednio do tej zmiennej lub stwórz nową tablicę w konstruktorze.
komentarz 7 stycznia 2021 przez Patryk2001 Początkujący (470 p.)
Super, głupi błąd z mojej strony, teraz działa. Dziękuje !!!

Podobne pytania

+2 głosów
2 odpowiedzi 513 wizyt
–2 głosów
1 odpowiedź 174 wizyt
pytanie zadane 1 lipca 2021 w Java przez simpsone Nowicjusz (120 p.)
0 głosów
1 odpowiedź 318 wizyt

92,840 zapytań

141,781 odpowiedzi

320,856 komentarzy

62,172 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...