Programming Java

Tasks studies - laboratory


Project maintained by dawidolko Hosted on GitHub Pages — Theme by dawidolko

PROGRAMOWANIE OBIEKTOWE JAVA – LABORATORIUM

TABLICE

Tablice to ciągi obiektów tego samego typu. Tablice mają określony podczas ich tworzenia rozmiar, który nie może ulec zmianie. Tablice to pierwszy rodzaj kolekcji. Kolekcje to zbiór powiązanych ze sobą elementów. Kolekcje są bardzo często wykorzystywane w programowaniu, ponieważ często mamy potrzebę przechowywać w programach tablice (bądź listy, zbiory itp.) wielu elementów, a nie pojedyncze wartości.

Wybrane metody używane w tablicach

length – rozmiar tablicy charAt – pobranie znaku w tablicy

TABLICE JEDNOWYMIAROWE

public class Main {
 public static void main(String[] args) {
   /*definicja tablicy
   deklaracja tablicy dataType[] arrayName;
   dataType - int, char, double, byte, etc. or Java objects
   arrayName - nazwa tablicy*/
   // I sposob
   double[] data;
   //alokacja pamieci
   data = new double[10];
   // II sposob
   double[] data1 = new double[10];
   //III sposób
   String[] slowa;
   slowa = new String[] {"Ala","ma","kota"};
   //inicjalizacja tablicy
   int[] LiczbyCalkowite = {12,4,45,32,24};
   int[] Liczby = new int[5];
   Liczby[0]=12;
   Liczby[1]=21;
   Liczby[2]=5;
   Liczby[3]=6;
   Liczby[4]=46;
 }
}

Dostęp do elementów tablicy

 public static void Dostep(){
   //dostęp do elementow tablicy
   int[] Liczby = {12,4,45,32,24};
   // access each array elements
   System.out.println("Accessing Elements of Array:");
   System.out.println("First Element: " + Liczby[0]);
   System.out.println("Second Element: " + Liczby[1]);
   System.out.println("Third Element: " + Liczby[2]);
   System.out.println("Fourth Element: " + Liczby[3]);
   System.out.println("Fifth Element: " + Liczby[4]);
   String[] slowa;
   slowa = new String[] {"Ala","ma","kota"};

   System.out.println(slowa[0]+ " "+slowa[1]+" "+slowa[2]);
 }

Metoda length

 public static void Dlugosc(){
   int[] calkowite = new int[5];
   double[] rzeczywiste = { 3.14, 5, -20.5 };
   System.out.println(
   "Liczba elementow w tablicy calkowite: " +
  calkowite.length);
   System.out.println(
   "Liczba elementow w tablicy rzeczywiste: " +
  rzeczywiste.length);
   }
public static void RozmiarArrayString(){
   String tekst = "Witajcie!";
   String[] slowa = { "Ania", "ma", "kota" };
   System.out.println("Liczba slow w zmiennej tekst: " + tekst.length());
   System.out.println("Liczba elementow w tablicy: " + slowa.length);
   System.out.println("Liczba znakow w pierwszym slowie z tablicy: " +
  slowa[0].length());
}

Użycie pętli

public static void PetlaFor(){
 int[] Liczby = {12, 4, 5};
 System.out.println("Using for Loop:");
 for(int i = 0; i < Liczby.length; i++) {
  System.out.println(Liczby[i]);
 }
}
//wypisywanie elemetów tablicy od ostatniego indeksu
 public static void PetlaFor1(){
   int[] Liczby = {12, 4, 5};
   for (int i = Liczby.length - 1; i >= 0 ; i--) {
    System.out.print(Liczby[i] + " ");
   }
 }

Użycie pętli for-each

public static void PetlaForEach(){
   int[] Liczby = {12, 4, 5};
   System.out.println("Using for Loop:");
   for(int i : Liczby) {
    System.out.println(i);
 }
}

TABLICE WIELOWYMIAROWE

public class ArrayExample {
 public static void main(String[] args) {
  3
   //deklaracja
   int[][] matrixA = new int[3][4];
   String[][][] data = new String[3][4][2];
   //inicjalizacja tablicy wielowymiarowej
   int[][] a = {
   {1, 2, 3},
   {4, 5, 6, 9},
   {7},
   };

   double[][] matrix = {
   {1.2, 4.3, 4.0},
   {4.1, -1.1}
   };
   //wyświetlenie elementow tablicy
   System.out.println("Elementy tablicy:");
   for (int i = 0; i < a.length; ++i) {
    for(int j = 0; j < a[i].length; ++j) {
     System.out.print(a[i][j] + "\t");
   }
   System.out.println();
   }
 }
}

Jak widać, każdy element tablicy wielowymiarowej sam w sobie jest tablicą. Ponadto, w przeciwieństwie do C/C++, każdy wiersz tablicy wielowymiarowej w Javie może mieć różną długość.

public class ArrayExample {
 public static void main(String[] args) {
   // create a 2d array
   int[][] a = {
   {1, -2, 3},
   {-4, -5, 6, 9},
   {7},
   };
   // first for...each loop access the individual array
   // inside the 2d array
   for (int[] innerArray: a) {
    // second for...each loop access each element inside the row
     for (int data : innerArray) {
       System.out.print(data + "\t");
   }
   System.out.println();
   }
 }
}

TABLICE TRZYWYMIAROWE

public class ArrayExample {
 public static void main(String[] args) {
   // test is a 3d array
   int[][][] test = {
   {
  4
   {1, -2, 3},
   {2, 3, 4}
   },
   {
   {-4, -5, 6, 9},
   {1},
  {2, 3}
   }
   };
   // for..each loop to iterate through elements of 3d array
   for (int[][] array2D: test) {
     for (int[] array1D: array2D) {
       for(int item: array1D) {
         System.out.print(item +"\t");
       }
       System.out.println();
      }
   }
 }
}

KOPIOWANIE TABLICY

public class ArrayExample {
 public static void main(String[] args) {
   int [] numbers = {1, 2, 3, 4, 5, 6};
   int [] positiveNumbers = numbers; // copying arrays
   System.out.println("Tablica: ");
   for (int number: positiveNumbers) {
     System.out.print(number + ", ");
   }
   System.out.println("\nKopia tablicy: ");
   for (int number: positiveNumbers) {
     System.out.print(number + ", ");
   }
 }
}

UŻYCIE PĘTLI PRZY KOPIOWANIU TABLICY

public class ArrayExample {
 public static void main(String[] args) {
   int [] source = {1, 2, 3, 4, 5, 6};
   int [] destination = new int[6];
   // iterate and copy elements from source to destination
   for (int i = 0; i < source.length; ++i) {
    destination[i] = source[i];
   }
   // converting array to string
   System.out.println(Arrays.toString(destination));
   }
}

W powyższym przykładzie użyliśmy pętli for do iteracji przez każdy element tablicy źródłowej. W każdej iteracji kopiujemy elementy z tablicy źródłowej do tablicy docelowej. W tym przypadku tablica źródłowa i docelowa odnoszą się do różnych obiektów (głęboka kopia). W związku z tym, jeśli elementy jednej tablicy zostaną zmienione, odpowiednie elementy innej tablicy pozostaną niezmienione. Metoda toString() służy do konwersji tablicy na ciąg.

KOPIOWANIE TABLICY Z WYKORZYSTANIEM METODY ARRAYCOPY()

arraycopy(Object src, int srcPos,Object dest, int destPos, int length)
//src – tablica źródłowa, którą chcemy skopiować
//scrPoc – pozycja początkowa (indeks) w tablicy źródłowej
//dest – tablica docelowa, do której elementy zostaną skopiowane ze źródła
//destPOs – pozycja początkowa (indeks) w tablicy docelowaej
//length – liczba elementow do skopiowanie
public class ArrayExample {
 public static void main(String[] args) {
   int[] tab1 = {2, 3, 12, 4, 12, -2};
   int[] tab3 = new int[5];
   // tworzenie tablicy tab2 o długości tab1
   int[] tab2 = new int[tab1.length];
   // kopiowanie tablic1 do tab2
   System.arraycopy(tab1, 0, tab2, 0, tab1.length);
   System.out.println("tab2 = " + Arrays.toString(tab2));
   // kopiowanie lementow indeksu 2 do tab1
   // kopiowanie elementow indeksu 1 do tab3
   // 2 elementy zostaną skopiowane
   System.arraycopy(tab1, 2, tab3, 1, 2);
   System.out.println("tab3 = " + Arrays.toString(tab3));
 }
}

METODA COPYOFRANGE()

public class ArrayExample {
 public static void main(String[] args) {
   int[] source = {2, 3, 12, 4, 12, -2};
   // copying entire source array to destination
   int[] destination1 = Arrays.copyOfRange(source, 0, source.length);
   System.out.println("destination1 = " +
  Arrays.toString(destination1));
   // copying from index 2 to 5 (5 is not included)
   int[] destination2 = Arrays.copyOfRange(source, 2, 5);
   System.out.println("destination2 = " +
  Arrays.toString(destination2));
 }
}

Zmiana rozmiaru tablicy

//metoda do zmiany rozmiaru tablicy
 public static void ChangeLength() {
   int[] liczby = {10, 100, -5};
   System.out.println("Elementy tablicy liczby:");
   for (int x : liczby) {
     System.out.print(x + ", ");
   }
   System.out.println();
   // tworzymy druga tablice o wiekszym rozmiarze
   int[] tymczasowaTabela = new int[5];
   // przepisujemy elementy z pierwszej tablicy
   for (int i = 0; i < liczby.length; i++) {
     tymczasowaTabela[i] = liczby[i];
   }
   // ustawiamy dodatkowe elementy
   tymczasowaTabela[3] = 20;
   tymczasowaTabela[4] = 1;
   // przypisujemy druga tablice do pierwszej
   liczby = tymczasowaTabela;
   System.out.println("Elementy tablicy liczby:");
   for (int x : liczby) {
     System.out.print(x + ", ");
   }
 }

Pytania

  1. Czy poniższy kod jest poprawny?
int[] tablica = { 1, 2, 3 };
System.out.println(tablica[3]);
  1. Jaki będzie wynik działania poniższego programu, gdy wartość zmiennej szukanaLiczba będzie równa: 0 czy 500 ?
 public static void main(String[] args) {
   boolean znaleziona = false;
   int[] tablica = { -20, 105, 0, 26, -99, 7, 1026 };
   int szukanaLiczba = ?; // pewna wartosc
   for (int i = 0; i <= tablica.length; i++) {
     if (tablica[i] == szukanaLiczba) {
       znaleziona = true;
       break; // znalezlismy liczbe - mozemy wiec przerwac petle
     }
   }
   if (znaleziona) {
     System.out.println("Liczba " + szukanaLiczba + " zostala
      znaleziona!");
   } else {
   System.out.println("Liczba " + szukanaLiczba + " nie zostala
    znaleziona.");
   }
}
  1. Która z poniższych tablic jest zdefiniowana/utworzona niepoprawnie i dlaczego?
 public static void main(String[] args) {
   int liczby = { 1, 2, 3 };
   String[] litery = { 'a', 'b', 'c' };
   String[] slowa = new String[];
   slowa = { "Ala", "ma", "kota" };
   double[] rzeczywiste = new double[] { 3.14, 2.44, 20 };
   double[] innaTablica = new int[3];
   int[] tablica = new int[5] { 1, 10, 100 };
   double[] kolejnaTablica = new double[3];
   kolejnaTablica = { 5, 10, 15 };
   String[] tab = { "Ala ma kota" };
   }

Tasks to solve on your own:

Task 1.

Write a program that calculates the sum and average of array elements using the for and for each loops.

The elements for the array are to be drawn from any range. A separate method for drawing numbers should be proposed.

Task 2.

Write a program that prints every second element of the arrays you define. The first array should have an even number of elements, and the second an odd number.

Task 3.

Write a program in which you define an array of String values ​​and initialize it with sample values. Use the for-each loop to print all values of the array with all letters converted to uppercase. Use the toUpperCase functionality of the String value.

Task 4.

Write a program that takes five words from the user and stores them in an array. Then, the program should print all the words, from last to first, with the letters written from the end to the beginning. For example, for the words "Ala", "ma", "kota", "i", "psa" the program should print: "asp", "i", "atok", "am", "alA".

Task 5.

Write a program that takes eight numbers from the user, stores them in an array, and then sorts the array in ascending order and prints the result to the screen. For example, for the numbers 10, -2, 1, 100, 20, -15, 0, 10, the program will print -15, -2, 0, 1, 10, 10, 20, 100. Think about how you can sort a sequence of numbers and try to implement your solution. Test it on different data sets. You can also use one of the popular sorting algorithms, e.g. insertion sort. The operation of the algorithm was discussed in detail in the algorithms and data structures classes.

Task 6.

Write a program that will get five numbers from the user, store them in an array, and then count and print the factorial of each of the numbers.

Task 7.

Write a program in which you define two arrays storing values ​​of type String.

Initialize both arrays with the same values, in the same order. Write code that will compare both arrays and answer the question whether they are the same.