Looping Secara Diagonal Melalui 2d Java Array

1. Ikhtisar

Dalam tutorial ini, kita akan melihat bagaimana melakukan loop secara diagonal melalui array dua dimensi. Solusi yang kami sediakan dapat digunakan untuk larik dua dimensi persegi dengan ukuran berapa pun.

2. Array Dua Dimensi

Kunci dalam bekerja dengan elemen array adalah mengetahui cara mendapatkan elemen tertentu dari array itu. Untuk array dua dimensi, kami menggunakan indeks baris dan kolom untuk mendapatkan elemen array. Untuk masalah ini, kami akan menggunakan diagram berikut untuk menunjukkan cara mendapatkan elemen ini.

Selanjutnya, kita perlu memahami berapa banyak garis diagonal yang kita miliki dalam larik kita, seperti yang terlihat pada diagram. Kami melakukan ini dengan terlebih dahulu mendapatkan panjang satu dimensi dari array dan kemudian menggunakannya untuk mendapatkan jumlah garis diagonal (Garis diagonal ) .

Kami kemudian menggunakan jumlah garis diagonal untuk mendapatkan titik tengah yang akan membantu dalam pencarian indeks baris dan kolom.

Dalam contoh ini, titik tengahnya adalah tiga:

int length = twoDArray.length int diagonalLines = (length + length) - 1 int midPoint = (diagonalLines / 2) + 1

3. Mendapatkan Indeks Baris dan Kolom

Untuk mengulang seluruh array, kita mulai mengulang dari 1 sampai variabel loop kurang dari atau sama dengan variabel diagonalLines .

for (int i = 1; i <= diagonalLines; i++) { // some operations }

Mari kita juga perkenalkan ide jumlah item dalam garis diagonal, menyebutnya itemsInDiagonal . Misalnya, baris 3 pada diagram di atas memiliki 3 item (g, e, c) dan baris 4 memiliki 2 (h, f). Variabel ini bertambah 1 dalam loop ketika variabel loop i kurang atau sama dengan titik tengah . Kemudian dikurangi dengan 1 jika tidak.

Setelah menambah atau mengurangi itemsInDiagonal, kita kemudian memiliki loop baru dengan variabel loop j . Variabel j bertambah dari 0 hingga lebih kecil dari itemsInDiagonal.

Kami kemudian menggunakan variabel loop i dan j untuk mendapatkan indeks baris dan kolom. Logika kalkulasi ini bergantung pada apakah variabel loop i lebih besar dari midpointatau tidak. Jika i lebih besar dari titik tengah , kami juga menggunakan variabel panjang untuk menentukan indeks baris dan kolom:

int rowIndex; int columnIndex; if (i <= midPoint) { itemsInDiagonal++; for (int j = 0; j < itemsInDiagonal; j++) { rowIndex = (i - j) - 1; columnIndex = j; items.append(twoDArray[rowIndex][columnIndex]); } } else { itemsInDiagonal--; for (int j = 0; j < itemsInDiagonal; j++) { rowIndex = (length - 1) - j; columnIndex = (i - length) + j; items.append(twoDArray[rowIndex][columnIndex]); } }

4. Kesimpulan

Dalam tutorial ini, kami telah menunjukkan bagaimana melakukan loop secara diagonal melalui array dua dimensi persegi menggunakan metode yang membantu mendapatkan indeks baris dan kolom.

Seperti biasa, kode sumber lengkap dari contoh ini tersedia di GitHub.