Melambung Diagonal Melalui Array Java 2d

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan melihat bagaimana untuk melingkar secara menyerong melalui array dua dimensi. Penyelesaian yang kami sediakan dapat digunakan untuk susunan dua dimensi persegi dengan berbagai ukuran.

2. Susunan Dua Dimensi

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

Seterusnya, kita perlu memahami berapa banyak garis pepenjuru yang kita miliki dalam susunan kita, seperti yang dilihat dalam rajah. Kami melakukan ini dengan mendapatkan panjang satu dimensi susunan dan kemudian menggunakannya untuk mendapatkan bilangan garis pepenjuru (garis pepenjuru ) .

Kami kemudian menggunakan bilangan garis pepenjuru untuk mendapatkan titik tengah yang akan membantu dalam mencari indeks baris dan lajur.

Dalam contoh ini, titik pertengahan adalah tiga:

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

3. Mendapatkan Indeks Baris dan Lajur

Untuk melengkapkan keseluruhan susunan, kita mula mengulangi dari 1 hingga pemboleh ubah gelung kurang dari atau sama dengan pemboleh ubah diagonalLines .

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

Mari juga memperkenalkan idea jumlah item dalam garis pepenjuru, menyebutnya itemInDiagonal . Contohnya, baris 3 dalam rajah di atas mempunyai 3 item (g, e, c) dan baris 4 mempunyai 2 (h, f). Pemboleh ubah ini ditambah oleh 1 dalam gelung apabila pemboleh ubah gelung i kurang atau sama dengan titik tengah . Kemudian dikurangkan oleh 1 sebaliknya.

Setelah menambah atau mengurangkan itemDiagonal, kita kemudian mempunyai gelung baru dengan pemboleh ubah gelung j . Pemboleh ubah j meningkat dari 0 hingga kurang daripada itemInDiagonal.

Kami kemudian menggunakan pemboleh ubah gelung i dan j untuk mendapatkan indeks baris dan lajur. Logik pengiraan ini bergantung pada apakah pemboleh ubah gelung i lebih besar daripada titik tengahatau tidak. Apabila i lebih besar daripada midPoint , kami juga menggunakan pemboleh ubah panjang untuk menentukan indeks baris dan lajur:

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 untuk melingkar secara menyerong melalui array dua dimensi persegi menggunakan kaedah yang membantu dalam mendapatkan indeks baris dan lajur.

Seperti biasa, kod sumber penuh contoh boleh didapati di GitHub.