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

JAVA/ Tablice wielowymiarowe/wyjątek, ale działa

Object Storage Arubacloud
0 głosów
131 wizyt
pytanie zadane 21 października 2018 w Java przez MarcinZielony Użytkownik (710 p.)

Witajcie

kod działa, tablice wypisuje, ale wyskakuje wyjątek:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
        at Table.main(table.java:17)

Niby mozna użyć, w zagniezdżonym "for",czyli:

   j< tab[i].length

 ale nie wiem co to za różnica...

import java.util.Scanner;

public class Table{
	
	public static void main (String[] args)
	
	{
		
		int tab[][]={{1,2,3},{ 6,7,8}};
		
		for(int i=0; i<=tab.length; i++)
		{
				
				for(int j=0; j<=tab.length; j++)
					
				{
				System.out.println(tab[i][j]);
				}
				
		}
		
	}
	
}

 

2 odpowiedzi

0 głosów
odpowiedź 21 października 2018 przez mhdv Obywatel (1,580 p.)
edycja 21 października 2018 przez mhdv

"ArrayIndexOutOfBoundsException" - Jak wyjątek wskazuje, wykraczasz indeksem poza granice tablicy. Spróbuj zrobić pętle ze znakiem "<" zamiast "<=", bo drugi zapis wykona się również dla tab[3][3], a takiego indeksu w tablicy nie ma :).

EDIT: Tablica wielkości 3x3 ma indeksy 0, 1, 2, w ramach ścisłości, chociaż zakładam, że to wiesz :).

EDIT2: Tablica jest wielkości 2x3, dlatego musisz użyć zagnieżdżenia w celu wydobycia length = 3. Pierwszy wymiar tablicy = 2, a dopiero drugi = 3 :)).

komentarz 21 października 2018 przez MarcinZielony Użytkownik (710 p.)
Aj, skopiowałem przed zmianą. Jak użyję tylko < to nie wypisze całej tablicy, tylko 1,2,6,7 (Shell)
komentarz 21 października 2018 przez MarcinZielony Użytkownik (710 p.)
Tak, rozumiem co znaczy ten wyjątek, tylko nie rozumiem jak mogę wykroczyć poza tablicę skoro odwołuję się, jak sama nazwa wskazuje- length, do jej długości(???)
1
komentarz 21 października 2018 przez mhdv Obywatel (1,580 p.)
Ah, teraz spojrzałem. Zauważ że Twoja tablica główna jest wielkości 2. Masz 2x po 3 wartości. Dlatego musisz użyć wspomnianego przez Ciebie zagnieżdżenia, żeby uzyskać wartość length = 3. Twoja tablica ma właściwie wymiary 2x3, na co wcześniej nie zwróciłem uwagi :)
komentarz 21 października 2018 przez MarcinZielony Użytkownik (710 p.)
No jak...

tab[i]={1,2,3}, czyli 0,1,2

tab[j]={6,7,8}, czyli 0,1,2

to jest 3x3

Chyba, ze chodzi o to, ze [i][j], to 2

a elementy(1,2,3) i (6,7,8), to 3...

i wtedy wychodzi 2x3(?)
1
komentarz 21 października 2018 przez mhdv Obywatel (1,580 p.)
Masz dwa elementy tablicy po 3 wartości w każdym. Tablica dwuwymiarowa 2x3:

tab[0] = {1,2,3}

tab[1] = { 6,7,8}

dalej:

tab[0][0] = 1

tab[0][1] = 2

tab[0][2] = 3

To chyba wyjaśnia Twoje wątpliwości. Mam nadzieję, że pomogłem :)).
komentarz 21 października 2018 przez MarcinZielony Użytkownik (710 p.)
Wszystko jasne. Jadę dalej. Dzieki :)
0 głosów
odpowiedź 21 października 2018 przez Wiciorny Ekspert (270,190 p.)

   j< tab[i].length

 yyy :D  to bedzie mialo roznice jak tablica bedzie miala różne wielkosci wymiarów :) niż to co zapisałeś 

komentarz 21 października 2018 przez MarcinZielony Użytkownik (710 p.)
A widzisz :) Dzięki.

Podobne pytania

0 głosów
2 odpowiedzi 516 wizyt
pytanie zadane 23 listopada 2017 w C i C++ przez Dordonmegazordon Początkujący (350 p.)
0 głosów
3 odpowiedzi 376 wizyt
pytanie zadane 10 listopada 2018 w Java przez Tom_Ja Dyskutant (7,970 p.)

92,578 zapytań

141,426 odpowiedzi

319,653 komentarzy

61,961 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!

...