Do przechowywania wielu wartości w języku java możemy użyć 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.
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 java 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
Tablice dwuwymariowe w Java
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ć java 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 (java tablice)
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 języku java, 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. J
Zachęcam też do zapoznania się z innymi artykułami na moim blogu. np. Java Scanner, wprowadzanie danych z klawiatury.