CodeGym /Kurslar /Java SELF AZ /Səkilli massivlər Java-da

Səkilli massivlər Java-da

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Düzgün olmayan massivlər

Java-da sən, proqramçı olaraq, ikiölçülü massivdə sətirləri yalnız yerlərini dəyişə bilməzsən, həm də bu massivi istədiyin kimi özüv yığa bilərsən.

Götürək ki, sən istəyirsən, ikiölçülü massivdə birinci sətirin uzunluğu 10, ikinci sətirin isə 50 olsun. Belə etmək olar? Bəli, olar.

Əvvəlcə «konteyner konteynerləri» yaratmaq lazımdır — yəni birinci massiv, hansı ki sətir massivlərinə referans saxlayacaq. Bu belə edilir:

int[][] ad = new int[yüksəklik][];

Sadəcə olaraq ikinci parametri bildirmirsən, və Java maşını yalnız «konteyner konteynerləri» yaradır. Bu kod icra olunandan sonra yaddaşda bu olacaq:

Zolaqlı massivlər Java-da

Birölçülü massivlər yaratmağı isə artıq bilirsən 🙂

Son kod belə görünəcək:

// Vacib məlumat matrisi
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50];
İkiölçülü massiv

Sıfırıncı sətir — 10 elementdən ibarət massiv
Birinci sətir — 50 elementdən ibarət massiv.

İndi sən belə adlandırılan «düzgün olmayan massiv» yaratdın.

Və əgər biz bu massivdəki bütün elementləri ekrana çıxarmaq istəsək, massivlərin uzunluqlarının fərqli olmasını nəzərə alaraq, length xüsusiyyəti çox faydalı olacaq.

Yeri gəlmişkən, bizim nümunədə «konteyner konteynerlərinin» uzunluğunu necə öyrənmək olar? Axı bu da obyekt-massivdir, yəni uzunluğa malikdir. Doğru cavab — matrix.length.

Bəs sətir massivlərinin uzunluqları necə? matrix[0].length



2. İkiölçülü massivlə işləmək

Tutaq ki, ikiölçülü bir massivi ekrana çıxarmaq istəyirsiniz. Bunu necə edək?

Kodumuz təxminən belə görünəcək:

int[][] matrix = new int[3][];
matrix[0] = new int[]{1, 2, 3, 4, 5, 6};
matrix[1] = new int[]{1, 2, 3};
matrix[2] = new int[]{1};
for (int i = 0; i < matrix.length; i++) {
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
Massiv yaratmaq
Massivi dəyərlərlə doldurmaq


Xarici dövr massiv sətirləri üzrə gedir — massiv sətirlərini keçib gedir.
Daxili dövr hüceyrələr üzrə gedir — bir sətrin hüceyrələrini keçib gedir.

Sizə iki iç içə dövr lazım olacaq. Birinci dövrü xarici, ikinci isə — daxili adlandıracağıq.

Xarici dövrdə (i dəyişəni) ardıcıllıqla ikiölçülü massivimizin sətrindən ibarət olan bütün massivləri keçirik. i dəyişəninin hər bir dəyəri həmin nömrəli sətirə uyğun gəlir.

Daxili dövrdə (j dəyişəni) isə massiv-sətirlərin bütün hüceyrələrini keçirik. Daxili dövrün nəticəsində bir sətrin dəyərlərindən ibarət sətr ekrana çıxır.

Ekranda belə bir şey görünəcək:

Bir massiv sətri işlənib
1 2 3 4 5 6 
İki massiv sətri işlənib
1 2 3 4 5 6
1 2 3 
Üç massiv sətri işlənib
1 2 3 4 5 6
1 2 3
1 


3. Çoxölçülü massivlər

Və daha bir maraqlı fakt massivlər haqqında, yəqin ki, artıq təxmin etmisiniz. Əgər ikiölçülü bir massiv yaratmaq mümkündürsə, üçölçülünü də yaratmaq olar?

Bəli, istənilən ölçüdə massiv yaratmaq olar. Belə massivlərə «çoxölçülü» deyilir.

Gəlin maraq üçün 4 ölçülü bir massiv yaradaq.

 int[][][][] matrix = new int[2][3][4][5];

Çox sadə kod deyilmi?

Bəs onu əl ilə yaratmaq necə olar?

int[][][][] matrix;
matrix = new int[2][][][];                // uzunluğu 2 olan «istinadların istinadlarının istinadları» massivini yaradırıq
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];             // uzunluğu 3 olan «istinadların istinadları» massivini yaradırıq
  for (int j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];          // uzunluğu 4 olan istinadlar massivini yaradırıq
    for (int k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];       // uzunluğu 5 olan tamsayılar massivlərini yaradırıq
  }
}

Bu isə yalnız massiv yaratmaqdır! Axı onunla işləmək də lazımdır.

Bonus tapşırıq — üçölçülü massivdəki bütün dəyərləri ekrana çıxaran kod yazın.


Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION