Do przechowywania wielu wartości w Javie, możemy wykorzystać tablice. W tym artykule dowiesz się jak stworzyć tablicę jedno i dwu wymiarową. Jak pobrać i wpisać do nich wartości.
Artykuł jest kontynuacją darmowego kursu, jeśli nie przerobiłeś poprzednich tematów, możesz mieć problem ze zrozumieniem tego artykułu.
Wszystkie artykuły z cyklu „Kurs Java”:
- Przygotowanie środowiska do pracy z Javą.
- Pierwszy program – zlicz ile znaków, jest w tekście.
- Scanner, wprowadzanie danych z klawiatury.
- Instrukcja warunkowa – IF
- Pętla for w języku Java
- Tablice w Javie – przechowywanie zbioru wartości
- Obiektowość – klasa, pole, metoda, obiekt
Czego potrzebujesz:
- zainstalowane JDK (instrukcja)
- 15 min wolnego czasu
Weźmy dla przykładu sytuację, w której chcielibyśmy stworzyć krzyżówkę. Do zapisania haseł krzyżówki, będziemy potrzebowali strukturę, która pozwoli nam przechowywać zestawy znaków.
np.
a l a
m a r c i n
j u r e k
Mamy już cel, teraz przejdźmy do poznania wszystkich elementów potrzebnych do jego realizacji.
Przyjrzymy się tablicy jednowymiarowej, tablicy dwuwymiarowej regularnej oraz dwuwymiarowej o nieregularnej liczbie kolumn.
Tablica jednowymiarowa
// deklaracja typ[] nazwaTablicy; // inicjalizacja nazwaTablicy = new typ[rozmiarTablicy];
Podczas tworzenia tablicy musimy wskazać, jaki będzie miała rozmiar, nie ma możliwości rozszerzenia lub pomniejszenia tablicy w późniejszym czasie. Deklaracja mówi, że chcemy mieć tablicę. Inicjalizacja to etap, w którym prosimy o zarezerwowanie miejsca dla tablicy.
Dostęp do elementów tablicy
Omawiając tablice, musimy powiedzieć sobie o indeksach. Indeksy wykorzystujemy w celu odwołania się do poszczególnych elementów tablicy. Indeksy rozpoczynają się od 0 i kończą na wartości o jeden mniejszej niż długość tablicy.
Dla tablicy o długości 5, mamy indeksy od 0 do 4. Pierwszy element tablicy to indeks 0, trzeci element tablicy to indeks 2.
Przypisanie wartości
// deklaracja z inicjalizacją int[] liczby = new int[3]; // przypisanie wartości liczby[0] = 1; liczby[1] = 2; liczby[2] = 3;
Odczytanie wartości
// wyświetlenie drugiego elementu tablicy System.out.println(liczby[1]); // wyświetli liczbę 2
Wartości domyślne
Java zawsze ustawia domyślne wartości dla typów. Niezależnie od tego gdzie ich używamy.
Wartości domyślne dla typów:
- całkowitoliczbowe (byte, short, int, long): 0
- zmiennoprzecinkowe (float, double): 0.0
- znakowy (char): ' ';
- logiczny (boolean): false
- referencyjny (obiekty): null
Przykład:
// deklaracja z inicjalizacją char[] znaki = new char[5]; // wyświetlenie wartości System.out.println(znaki[3]) // wyświetli pusty znak
Tablica dwuwymariowa
W tablicy dwuwymiarowej mamy do czynienia z dwoma wymiarami, a więc trzeba je uwzględnić podczas deklaracji oraz inicjalizacji.
Najprostszym sposobem na zobrazowanie tablicy dwuwymiarowej, jest zaprezentowanie jej w formie tabeli, która ma określoną liczbę wierszy i kolumn.
Przykład:
// deklaracja z inicjalizacją int[][] liczby = new int[2][4]; // przykładowe wartości tablicy // 1 2 3 4 // 2 4 6 8 // przypisanie wartości liczby[0][0] = 1; liczby[0][1] = 2; liczby[0][2] = 3; liczby[0][3] = 4; liczby[1][0] = 2; liczby[1][1] = 4; liczby[1][2] = 6; liczby[1][3] = 8;
Teraz zastanówmy się, jak przygotować tablicę, która będzie miała nieregularną liczbę kolumn.
Tablica o nieregularnej liczbie kolumn
Żeby dobrze zrozumieć taką tablicę, należy inaczej spojrzeć na tablicę dwuwymiarową. Tablica dwuwymiarowa, to jednowymiarowa tablica tablic jednowymiarowych.
W takim podejściu każdy wiersz jest tablicą jednowymiarową. Definiowanie różnej liczby kolumn w wierszu sprowadzimy do inicjalizowania różnej długości tablic jednowymiarowych dla danego wiersza.
Przykład:
// a a a // z z // p p p p char[][] znaki = new char[3][] // mówimy ile będzie wierszy znaki[0] = new char[3]; // mówimy ile będzie kolumn w pierwszym wierszu znaki[1] = new char[2]; // mówimy ile będzie kolumn w drugim wierszu znaki[2] = new char[4]; // mówimy ile będzie kolumn w trzecim wierszu // przypisanie wartości znaki[0][0] = 'a'; znaki[0][1] = 'a'; znaki[0][2] = 'a'; znaki[1][0] = 'z'; znaki[1][1] = 'z'; znaki[2][0] = 'p'; znaki[2][1] = 'p'; znaki[2][2] = 'p'; znaki[2][3] = 'p';
Jesteśmy już bardzo blisko stworzenia krzyżówki, a praktycznie już ją stworzyliśmy 🙂 Opakujmy wszystko w program, który będzie można uruchomić 🙂
Krzyżówka – implementacja
class Program { public static void main (String args[]) { char[][] krzyzowka = new char[3][]; krzyzowka[0] = new char[3]; krzyzowka[1] = new char[6]; krzyzowka[2] = new char[5]; krzyzowka[0][0] = 'a'; krzyzowka[0][1] = 'l'; krzyzowka[0][2] = 'a'; krzyzowka[1][0] = 'm'; krzyzowka[1][1] = 'a'; krzyzowka[1][2] = 'r'; krzyzowka[1][3] = 'c'; krzyzowka[1][4] = 'i'; krzyzowka[1][5] = 'n'; krzyzowka[2][0] = 'j'; krzyzowka[2][1] = 'u'; krzyzowka[2][2] = 'r'; krzyzowka[2][3] = 'e'; krzyzowka[2][4] = 'k'; } }
Zdefiniowaliśmy krzyżówkę, ale co nam po niej, jeśli nie możemy spróbować jej odgadnąć? 🙂
W przyszłości poznamy lepszy mechanizm, który umożliwi nam przeprowadzenie rozgrywki. Póki co musisz zadowolić się faktem przechowania wartości krzyżówki w zmiennej tablicowej.
Czas na Ciebie 🙂
Zadanie 1. Napisz program, który wczyta do tablicy dwuwymiarowej 4 liczby (a,b,c,d):
a b
c d
Tak wprowadzoną tablicę program powinien zmodyfikować, przemnażając każdy jej element przez dwa. Na końcu wyświetl wszystkie elementy tablicy.
W wolnej chwili poczytaj nieco o klasie Arrays, która dostarcza wiele przydatnych metod dla tablic.
Podsumowanie
Poznaliśmy tablice w javie, jedno i dwuwymiarowe, wiemy już jak przechowywać więcej niż jedną wartość w zmiennej. W kolejnych artykułach dowiesz się nieco o obiektowości, wyjątkach, wątkach, typach sparametryzowanych, kolekcjach i innych.
Jeśli artykuł był dla Ciebie pomocny, proszę, udostępnij go, być może przyda się też innym. Zapraszam Cię do komentowania, zadawania pytań 🙂
Do kolejnego ! 🙂