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

Java, Zadanie - Zamówienia

Object Storage Arubacloud
0 głosów
338 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 (154,860 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 442 wizyt
–2 głosów
1 odpowiedź 165 wizyt
pytanie zadane 1 lipca 2021 w Java przez simpsone Nowicjusz (120 p.)
0 głosów
1 odpowiedź 291 wizyt

92,615 zapytań

141,465 odpowiedzi

319,781 komentarzy

61,997 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...