Siódma prezentacja do kursu „Wstęp do programowania”.
Treść: Tablice cz. II – tablice wielowymiarowe, kopiowanie tablic.
Ta strona jest częścią starego kursu Javy. Nowy kurs, pt. “Programowanie w Javie z elementami bioinformatyki dla poczatkujących”, jest znacznie rozszerzony i dostosowany fo Javy 8. Jego forma jest także znacznie bardziej przystępna dla korzystających wyłącznie z treści on-line. Dostępne materiały znajdziesz tutaj.
Kopiowanie tablic
Różne sposoby kopiowania tablic. Pierwszy, wydawałoby się najbardziej oczywisty, okazuje się nieskuteczny. Kolejne pozwalają na rzeczywiste kopiowanie tablic.
package tablice; import java.util.Arrays; public class KopiowanieTablicy { /** * @param args */ public static void main(String[] args) { int[] tablica1 = new int[10]; int[] tablica2 = tablica1; // Metoda NIESKUTECZNA! // Wypełnianie tablicy liczbami od 0 do 9 for (int i=0; i<tablica1.length; i++) { tablica1[i]=i; } // Wypisanie zawartości obu tablic System.out.println("\nTablice przed zmianą zawartości "); System.out.print("Tablica1: "); for (int i : tablica1) System.out.print(i+" "); System.out.println(); System.out.print("Tablica2: "); for (int i : tablica2) System.out.print(i+" "); System.out.println(); //Zmiana trzeciej wartości w kopii tablicy (jak mogłoby się wydawać). tablica2[2] = 100; // Po wypisaniu zawartości okazuje się, że wartość trzeciej komórki została // zmieniona w OBU tablicach - tak naprawdę jest to jedna tablica, na którą // wkazują dwa WSKAŹNIKI. System.out.println("Tablice po zmianie zawartości "); System.out.print("Tablica1: "); for (int i : tablica1) System.out.print(i+" "); System.out.println(); System.out.print("Tablica2: "); for (int i : tablica2) System.out.print(i+" "); // Metody skuteczne // Metoda 1 - Kopiowanie za pomocą pętli System.out.println("\n\n * Kopiowanie za pomocą pętli"); // tworzymy dwie tablice int[] tablica3 = new int[10]; int[] tablica4 = new int[10]; // tablicę3 wypełniamy liczbami 0-9 for (int i=0; i<tablica3.length; i++) tablica3[i]=i; // iterujemy obie tablicę, pobierając wartości z tablicy3 // i wpisujemy je do tablicy 4 for (int i=0; i<tablica3.length; i++) tablica4[i]=tablica3[i]; // zmieniamy wartość jednej komórki w tablicy4 tablica4[2]=100; // wypisujemy wartości z obu tablic System.out.print("Tablice po zmianie zawartości"); System.out.println(); System.out.print("Tablica3: "); for (int i : tablica3) System.out.print(i+" "); System.out.println(); System.out.print("Tablica4: "); for (int i : tablica4) System.out.print(i+" "); // ___________________________________________________________ // Inne, zapewne bardziej praktyczne sposoby kopiowania tablic // Metoda 2 - Kopiowanie za pomocą Arrays.copyOf(); // Uwaga, należy dodać na górze komendę import java.util.Arrays; System.out.println("\n\n * Kopiowanie za pomocą Arrays.copyOf()"); int[] tablica5 = new int[10]; for (int i=0; i<tablica5.length; i++) tablica5[i]=i; // Kopiowanie tablic int[] tablica6 = Arrays.copyOf(tablica5, tablica5.length); tablica6[2]=100; System.out.println(); System.out.print("Tablica5: "); for (int i : tablica5) System.out.print(i+" "); System.out.println(); System.out.print("Tablica6: "); for (int i : tablica6) System.out.print(i+" "); // Metoda 3 Kopiowanie za pomocą System.arraycopy() System.out.println("\n\n * Kopiowanie za pomocą System.arraycopy()"); int[] tablica7 = new int[10]; for (int i=0; i<tablica7.length; i++) tablica7[i]=i; int [] tablica8 = new int[tablica7.length]; //Kopiowanie tablic System.arraycopy( tablica7, 0, tablica8, 0, tablica7.length ); tablica8[2]=100; System.out.println(); System.out.print("Tablica7: "); for (int i : tablica7) System.out.print(i+" "); System.out.println(); System.out.print("Tablica8: "); for (int i : tablica8) System.out.print(i+" "); // Metoda 4 Kopiowanie za pomocą metody .clone() System.out.println("\n\n * Kopiowanie za pomocą metody .clone()"); int[] tablica9 = new int[10]; for (int i=0; i<tablica9.length; i++) tablica9[i]=i; //Kopiowanie tablic int[] tablica10 = (int[])tablica9.clone(); tablica10[2]=100; System.out.println(); System.out.print("Tablica9: "); for (int i : tablica9) System.out.print(i+" "); System.out.println(); System.out.print("Tablica10: "); for (int i : tablica10) System.out.print(i+" "); } }
Tablice dwuwymiarowe
Tworzenie tablic dwuwymiarowych, wypełnianie ich zawartością i wypisywanie zawartości.
// Deklaracja i inicjalizacja tablicy int[][] tablica = new int[10][10]; // Wypełnienie tablicy liczbami od 0 do 99 int wartosc = 0; for (int i=0; i<10; i++) { for (int j=0; j<10; j++ ) { tablica[i][j] = wartosc; wartosc++; } } System.out.println("Wartość tablica[6][4] "+tablica[6][4]); //Wypisanie wartości tablicy w 10 rzędach po 10 //Z zastosowaniem pętli for System.out.println("Zawartośc tablicy (for)"); for (int i=0; i<10; i++) { for (int j=0; j<10; j++ ) { System.out.print(tablica[i][j]+" "); } System.out.println(); } //Wypisanie wartości tablicy w 10 rzędach po 10 //Z zastosowaniem pętli foreach System.out.println("Zawartośc tablicy (foreach)"); for (int[] t : tablica) { for (int l : t) { System.out.print(l+" "); } System.out.println(); }
Tworzenie i wypełnienie tablicy
Tworzenie i wypełnienie od razu tablicy dwuwymiarowej oraz wypisanie zawartości tabeli.
int[][] tab = {{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}; for (int[] l : tab) { for (int m : l) System.out.print(m+" "); System.out.println(); }
Tablica trójwymiarowa
Tworzenie, wypełnianie zawartością i wypisanie zawartości tablicy trójwymiarowej.
//Deklaracja i inicjalizacja tablicy 3-wymiarowej int[][][] tablica3wymiarowa = new int[5][10][10]; int licznik = 0; // Wypełnianie zawartością tablicy // "Trzeci wymiar" for (int i=0; i<5; i++) { // "Drugi wymiar" for (int j=0; j<10; j++ ) { // "Pierwszy wymiar" for (int k=0; k<10; k++) //Wstawianie wartości tablica3wymiarowa[i][j][k] = licznik++; } } // Wypisanie zawartości tablicy // "Trzeci wymiar" for (int[][] t : tablica3wymiarowa) { // "Drugi wymiar" for (int[] u : t) { // "Pierwszy wymiar" for (int w : u) System.out.print(w+" "); System.out.println(); } System.out.println("****"); }
Szukanie największej liczby w tablicy dwuwymiarowej
Rozwiązanie zadania.
int[][] tab = {{1,2,3,4,5}, {6,7,8,9,10}, {11,22,13,14,15}}; int najwiekszaLiczba = 0; for (int[] l : tab) { for (int m : l) { if (najwiekszaLiczba &amp;amp;amp;amp;lt; m) najwiekszaLiczba = m; } } System.out.println("Największa liczba to "+najwiekszaLiczba);
Leave a Reply
You must be logged in to post a comment.