Problem z tablicami

0

Ktoś wie dlaczego podczas tego krótkiego kodu wyrzucany jest błąd :java.lang.ArrayIndexOutOfBoundsException: 1??

     int rozmiar=1;
     int pom[][]=new int[rozmiar][2];
     for(int j=0;j<tablica.size();j++){
         if(((x+tablica.get(j))<=tmp2)&&(x!=tablica.get(j))){
             pom[(rozmiar-1)][0]=x;
             pom[(rozmiar-1)][1]=tablica.get(j);
             rozmiar++;
             i++;
         }
0

Zazwyczaj oznacza to że w którymś momencie program usiłuje się dorwać do elementu tablicy o niepoprawnym indeksie.

rozmiar++;
i++;

Uno momento, czy mi się wydaje, czy Ty zmieniasz rozmiar tablicy po utworzeniu?

Tak poza tym:

  1. Oducz się języka polskiego
  2. Staraj się dawać zmiennym nazwy mające jakieś znaczenie
  3. Jeśli prosisz o pomoc z kodem, to albo daj cały, albo jakiś sensowny fragment. Z podanego trudno wywnioskować skąd się wzięło i co to jest np."x"," i" oraz "tablica".
0

Przede wszystkim tablice nazywasz jako pom, a potem pracujesz na zmiennej o nazwie "tablica"?

1
     int rozmiar=1;
     int pom[][]=new int[rozmiar][2];

Więc pom ma wymiary 1x2, a ty potem wesoło zakładasz ze ma taki rozmiar jak tablica.size() bo rozmiar inkrementujesz tyle razy w pętli. To ze sobie zrobisz rozmiar++ nie sprawia ze tablica nagle magicznie się powiększyła. Ona została zaalokowana i koniec!

Wyobraź sobie ze robisz wyciąg z konta i jest tam napisane ze masz 100zł. Jak teraz dopiszesz tam kilka zer na końcu to wcale nie znaczy ze kasa na koncie ci urośnie...

0

Czyli to mój błąd, bo o ile się nie mylę to w C++ można tak zrobić. A czy w jakiś inny sposób można stworzyć taka dynamiczna tablice?

0

Rozwiązanie trochę bez sensu, ale możesz tworzyć nową większą tablicę i przepisywać do niej starą.
Jednak dużo lepszym wyjściem będzie skorzystać z arrayList, jak kolega wyżej wspomniał.

1 użytkowników online, w tym zalogowanych: 0, gości: 1