Aku bertanya-tanya apa cara terbaik untuk mencetak 2D array. Ini adalah beberapa kode yang saya miliki dan saya hanya bertanya-tanya jika ini adalah praktik yang baik atau tidak. Juga benar saya dalam kesalahan yang saya buat dalam kode ini jika anda menemukan apapun. Terima kasih!!!
int rows = 5;
int columns = 3;
int[][] array = new int[rows][columns];
for(int i = 0; i<rows; i++)
for(int j = 0; j<columns; j++)
array[i][j] = 0;
for(int i = 0; i<rows; i++)
{
for(int j = 0; j<columns; j++)
{
System.out.print(array[i][j]);
}
System.out.println();
}
Anda dapat mencetak dengan cara yang sederhana.
Gunakan di bawah ini untuk mencetak 2D array
int[][] array = new int[rows][columns];
System.out.println(Arrays.deepToString(array));
Gunakan di bawah ini untuk cetak array 1D
int[] array = new int[size];
System.out.println(Arrays.toString(array));
Tidak ada yang salah dengan apa yang anda miliki. Double-loop bersarang untuk harus mudah dicerna oleh siapa pun yang membaca kode anda.
Konon, berikut rumusan yang lebih padat dan lebih idiomatik jawa. I'd sarankan mengaduk-aduk beberapa statis kelas utilitas seperti Array dan Koleksi lebih cepat daripada nanti. Ton boilerplate dapat dicukur dengan penggunaan yang efisien.
for (int[] row : array)
{
Arrays.fill(row, 0);
System.out.println(Arrays.toString(row));
}
|1 2 3|
|4 5 6|
Gunakan kode berikut untuk mencetak nilai-nilai.
System.out.println(Arrays.deepToString());
Output akan terlihat seperti ini (seluruh matriks dalam satu baris):
[[1,2,3],[4,5,6]]
@Ashika's jawaban yang bekerja fantastis jika anda ingin (0,0) untuk diwakili di atas, sudut kiri, per normal CS konvensi. Namun jika anda lebih memilih untuk menggunakan normal matematika konvensi dan menempatkan (0,0) di pojok kiri bawah, anda bisa menggunakan ini:
LinkedList<String> printList = new LinkedList<String>();
for (char[] row: array) {
printList.addFirst(Arrays.toString(row));;
}
while (!printList.isEmpty())
System.out.println(printList.removeFirst());
Ini digunakan LIFO (Last In First Out) untuk membalikkan urutan pada saat cetak.
Dari Oracle Resmi Jawa 8 Doc:
public static String deepToString(Object[] a)
Mengembalikan representasi string dari "dalam isi" dari array ditentukan. Jika array berisi array lain sebagai unsur-unsur, representasi string berisi konten mereka dan sebagainya. Metode ini ini dirancang untuk mengkonversi array multidimensi untuk string.
Coba ini,
for (char[] temp : box) {
System.err.println(Arrays.toString(temp).replaceAll(",", " ").replaceAll("\\[|\\]", ""));
}