JAVA tablice

background image

TABLICE W JAVIE



Załóż nowy projekt i nazwij jego główną klasę TestTablic. Od razu wykasuj z kodu wszelkie komentarze.

Tablicę tworzy się przez dodanie pary nawiasów kwadratowych do typu zmiennej, czyli na przykład:

int[] mojWektor = null;

lub po prostu

int[] mojWektor;


Jednak w tym momencie nie można dodawać elementów do tablicy. Dzieje się tak, ponieważ sama deklaracja
int[] mojWektor; nie rezerwuje miejsca w pamięci na tą tablicę. Takie coś jest dopiero odnośnikiem do tablicy,
czyli zawiera adres miejsca w pamięci gdzie znajdować się będą dane. To znaczy w tym momencie jeszcze nie
zawiera danych, bo został jej przypisany adres null, czyli brak adresu.

śeby tablica wskazywała na jakiś adres pamięci, trzeba użyć operatora new, który rezerwuje miejsce w pamięci i
zwraca jej adres. Czyli prawidłowe zarezerwowanie miejsca w pamięci na 5-elementową tablicę liczb całkowitych i
przypisanie jej do zmiennej będzie wyglądało tak:

int[] mojWektor = new int[5];

Operator new zwraca adres miejsca w pamięci, który jest przypisywany do zmiennej mojWektor. W tym
momencie można już normalnie korzystać z tablicy.
Każda tablica posiada dodatkową zmienną zawierającą ilość elementów w tej tablicy. Nazywa się ona length.
Przykład użycia:

for(int i=0;i<mojWektor.length; i++){
mojWektor[i] = 22+i*15;
System.out.println(mojWektor[i]);

}



Ćwiczenie: Umieść w funkcji main linijki:

int[] mojWektor = new int[5];
for(int i=0;i<mojWektor.length; i++){
mojWektor[i] = 22+i*15;
System.out.println(mojWektor[i]);
}



Jak można łatwo zauważyć, nie trzeba od razu podawać rozmiaru tablicy. Przypuśćmy, że chcemy najpierw
odczytać dane z pliku i dopiero, gdy już będziemy wiedzieli ile tych danych jest, możemy podać liczbę elementów
w tablicy. Jest ot bardzo przydatne – nie trzeba już używać list z dowiązaniami do przechowywania nieznanej
liczby danych.


Ćwiczenie: Przerób funkcję main następująco:

public static void main(String[] args) {
int[] mojWektor;

// w tym miejscu możemy odczytać ile jest danych w pliku

// np. 7 danych do przechowania w tablicy

int n = 7;
mojWektor = new int[n];
for(int i=0;i<mojWektor.length; i++){
mojWektor[i] = 22+i*15;
System.out.println(mojWektor[i]);
}
}




Ale to jest tylko jeden ze sposobów tworzenia tablic. Drugi to wypełnienie tablicy od razu wartościami. Robi się to
tak:

int[] mojWektor = { 1, 2, 3, 4, 5 };

Tablica mojWektor będzie wówczas zawierała 5 elementów.


Tablice mogą być także wielowymiarowe - dwu, trzy i więcej. Zmienną będącą dwuwymiarową tablicą liczb
całkowitych definiuje się tak:

int[][] dwuwymiarowa = new int[10][10];

Tak zdefiniowana tablica jest tablicą kwadratową - ma tyle samo wierszy, co kolumn. Trzeba pamiętać, że
pierwsza liczba jest ilością wierszy, a druga ilością kolumn.
Ilość wierszy uzyskuje się przez dwuwymiarowa.length a liczbę kolumn w danym wierszu uzyskuje się przez
dwuwymiarowa[numerWiersza].length.




mgr Agnieszka Patyk, Wydział FTiMS, Politechnika Gdańska, 2007

background image



Ćwiczenie: Doklej w funkcji main linijki:

int[][] dwuwymiarowa = new int[7][6];


for(int i = 0; i < dwuwymiarowa.length ; i++){

for(int j = 0; j < dwuwymiarowa[i].length ; j++){

dwuwymiarowa[i][j] = i*j;

System.out.print(dwuwymiarowa[i][j]+" ");

}

System.out.println("");

}



Tablicę dwuwymiarową można zadeklarować także przez podanie wartości:

int[][] vec = {
{ 1, 2, 3},
{ 2, 3, 4},
{ 3, 4, 5},
{ 4, 5, 6}
};


Tablica wcale nie musi być kwadratem, czy prostokątem! Można także tworzyć też tablice „szarpane”:

int[][] vec = {
{ 1, 2 },
{ 2, 3, 4, 5 },
{ 3 }
};

Takie tablice są bardzo przydatne przy stosowaniu niektórych metod numerycznych.

Tablice można też tworzyć dwuetapowo. Pierwszym etapem będzie stworzenie tablicy odnośników na tablice:

int[][] vec = new int[10][];

Jak widać, vec jest już zdefiniowaną tablicą, ale nie jest tablicą dwuwymiarową, ponieważ nie został stworzony
drugi wymiar. Na razie jest to tablica 10 elementów, z których każdy jest odnośnikiem do miejsca w pamięci, w
którym znajdować się będzie tablica liczb całkowitych. Teraz, mając taką tablicę odnośników można każdemu
elementowi przypisać tablicę:

vec[0] = new int[10];
vec[1] = new int[5];
vec[2] = new int[1];

i tak dalej… Jak widać to też jest sposób na tworzenie tablic szarpanych.


Ćwiczenie: Stwórz tablicę szarpaną, w której każdy wiersz będzie losowej długości:

System.out.println("");

int[][] vec = new int[10][];

for(int i = 0; i < vec.length; i++){

vec[i] = new int[

(int)(Math.random()*10)

];

for(int j = 0; j < vec [i].length ; j++){

vec [i][j] = i*j;

System.out.print(vec [i][j]+" ");

}

System.out.println("");

}




W powyższych przykładach wszystkie tablice są tablicami liczb całkowitych, ale mogą to być tablice dowolnych
typów, np. liczb rzeczywistych czy Stringów a także własnych obiektów, np.:

Samochod[] tablicaAut = new Samochod[3];
tablicaAut[0] = new Samochod("Polonez",34234,9.0);
tablicaAut[1] = new Samochod("Maybach",4231,10.0);
tablicaAut[2] = new Samochod("Maluch",3423,0.1);

for(int i=0;i<tablicaAut.length;i++){
System.out.println(tablicaAut[i]);
}



mgr Agnieszka Patyk, Wydział FTiMS, Politechnika Gdańska, 2007


Wyszukiwarka

Podobne podstrony:
Java łańcuchy, liczby, tablice pps
tablice do analizy konkur
TABLICE
Tablice Trwania ZyciaKonstruowanie
Java Media FreamWork
Algorytmy i struktury danych Wykład 3 i 4 Tablice, rekordy i zbiory
Tabliczka mnożenia
F1 15 Tablica kodu ASCII
ODCHYŁKI NORMALNE Tablice
java 2
Projekt java
1 mapka pogladowa okresl lokal tablic zal nr1
14 Tablica 12
Inzynieria oprogramowania w ujeciu obiektowym UML wzorce projektowe i Java iowuje

więcej podobnych podstron