@$D@F [ Generaďż˝ ]
java - programowanie
mam program ktory sortuje tablice jednowymiarowa, jesli liczba jest parzysta to zapisyhe ja w 2 tablicy w pierwszym wierszu [0], a jesli nie to w 2 [1], i jest jakis blad
java.lang.ArrayIndexOutOfBoundsException: 1
at sortowanie.sort(sortowanie.java:14)
at sortowanie.main(sortowanie.java:24)
Exception in threa
pomozecie ???
--------------------------------------------------------------------------
public class sortowanie
public static int[][] sort(int[]tab)
int[][]tab2=new int [tab.length][1];
int a=0;
int b=0;
for (int i=0; i<tab.length; i++)
if ((tab[i]/2)==0)
tab2[a][0]=tab[i];
a++;
else
tab2[b][1]=tab[i];
b++;
return tab2;
public static void main (String[] args)
int[] tab=1,4,6,2,4,66,2;
System.out.print (tab+" ");
sort(tab);
System.out.println (sort(tab)+" ");
wysiu [ ]
int[][]tab2=new int [tab.length][2];
A tutaj
System.out.println (sort(tab)+" ");
wystacza same uszy, bez spacji. Pusty string.
@$D@F [ Generaďż˝ ]
int[][]tab2=new int [tab.length];
bo to ilosc wierszy czy max numer wiersza ? :|
o uszach wiem ale w tedy lepiej widac :)
sprawdzam
@$D@F [ Generaďż˝ ]
int[][]tab2=new int [tab.length][b]; <- mialo byc
wysiu - nie pokazuje mi teraz zawratosci tab2 :/
Toolism [ GameDev ]
Out of bounds exception oznacza ze wyszedłeś poza tablicę. Kompilator wskazuje ci na linię 14stą w której zwiększasz b.
Jeśli mógłbym zaproponować to zmień też warunek tab/2 == 0 .. bo to robienie sprawy nieprofesjonalnie, do sprawdzania reszty z dzielenia służy mod ( modulo ). Ale to drobnostka.
wysiu [ ]
Tablice numerowane sa od zera, wiec jak chcesz wpisac cos do
tablica[1]
to jest to drugi element, wiec zadeklarowac musisz dlugosc [2].
int[][]tab2=new int [tab.length][2];
oznacza, ze bedziesz mial tablice tablic 7 na 2.
Ale nie sluchasz moich sugestii.
System.out.print (tab+" ");
sort(tab);
System.out.println (sort(tab)+" ");
Co to jest w ogole?:) Po co tam jest linia sort(tab);, i pomysl co zwraca sort(), jesli chcesz to wyswietlic:)
@$D@F [ Generaďż˝ ]
program juz prawie dziala :)
powiedz mi jeszcze jak otrzymac reszte z dzielenia :)
public static void main (String[] args)
int[] tab=1,4,3,7,9,3,6,2,4;
int[][]tab2=sort(tab);
System.out.println ();
for (int c=0; c<tab.length;c++)
System.out.print (" "+tab[c]+"");
System.out.println ();
System.out.println ();
for (int c=0;c<1;c++)
for (int d=0; d<tab.length; d++)
System.out.print (" "+tab2[d][c]+"");
System.out.println ();
zamotalem bo sprawdzalem czy wyswirla wartosci tablic
@$D@F [ Generaďż˝ ]
eh i juz dziala :) tylko te zera na koncu 2 tablicy sa niepotrzebne ;)
caly kod :) jakies sugestie wysiu ???
=============================
public class sortowanie
public static int[][] sort(int[]tab)
int[][]tab2=new int [tab.length][2];
int a=0;
int b=0;
for (int i=0; i<tab.length; i++)
if ((tab[i]%2)!=0)
tab2[a][0]=tab[i];
a++;
else
tab2[b][1]=tab[i];
b++;
return tab2;
public static void main (String[] args)
int[] tab=1,4,3,7,9,3,6,2,4;
int[][]tab2=sort(tab);
System.out.println ();
for (int c=0; c<tab.length;c++)
System.out.print (" "+tab[c]+"");
System.out.println ();
System.out.println ("posortowana");
for (int c=0;c<2;c++)
for (int d=0; d<tab2.length; d++)
System.out.print (" "+tab2[d][c]+"");
System.out.println ();
===========================
ps. dzieki za pomoc :)