Cari artikel di situs ini

Array Multi Dimensi

Versi ramah cetakVersi ramah cetak

Tipe apapun bisa digunakan sebagai tipe dasar suatu array. Kita bisa membuat array int, array String, array Object dan seterusnya. Terutama, karena array adalah tipe Java kelas satu, kita bisa membuat array yang bertipe array.

Misalnya suatu array bertipe int[], juga otomatis memiliki array bertipe int[][], yaitu "array bertipe array int". Array tersebut disebut array 2 dimensi. Tentunya, dengan tipe int[][], kita juag bisa membuat arraynya dengan tipe int[][][], yang merupakan array 3 dimensi, dan seterusnya. Tidak ada batasan berapa dimensi array yang kita buat, akan tetapi bukan sesuatu yang biasa dilakukan untuk membuat array lebih dari 3 dimensi. Pembahasan kita akan lebih dikhususkan pada array 2 dimensi. Tipe TipeDasar[][] biasanya dibaca "array 2 dimensi bertipe TipeDasar" atau "array dari array TipeDasar".

Deklarasi pernyataan "int[][] A;" adalah membuat variabel bernama A dengan tipe int[][]. Variabel ini berisi objek yang bertipe int[][]. Pernyataan pemberian nilai "A = new int[3][4];" akan membuat objek array 2 dimensi dan mengisi A ke objek yang baru dibuat tersebut.

Seperti biasa, deklarasi dan pemberian nilai bisa digabung menjadi satu pernyataan, seperti "int[][] A = new int[3][4];". Objek yang baru dibuat adalah objek yang merupakan array dari array int. Bagian int[3][4] menyatakan bahwa ada 3 array int di dalam array A, dan di setiap array int tersebut terdapat 4 int.

Cara seperti itu mungkin sedikit membingungkan, akan tetapi akan lebih mudah apabila kita bayangkan array tersebut seperti matriks. Istilah "int[3][4]" bisa disebut sebagai matriks dengan 3 baris dan 4 kolom, seperti pada ilustrasi berikut ini :

 

Untuk banyak hal, kita bisa mengabaikan kenyataan di atas, dan membayangkan bentuk matriks seperti di atas. Kadang-kadang kita juga harus ingat bahwa setiap baris sebenarnya juga merupakan suatu array. Array-array ini bisa dirujuk dengan A[0], A[1], dan A[2]. Setiap baris bertipe int[].

Pernyataan A[1] merujuk pada salah satu baris pada array A. Karena A[1] itu sendiri sebenarnya adalah array int, kita bisa menambah indeks lain untuk merujuk pada posisi pada baris tersebut. Misalnya A[1][3] adalah elemen nomor 3 pada baris 1. Seperti biasa, ingat bahwa posisi baris dan kolom dimulai dari 0. Jadi pada contoh di atas, A[1][3] bernilai 5. Lebih umum lagi, A[i][j] adalah posisi pada baris i dan kolom j. Seluruh elemen pada A bisa dinamakan seperti berikut :

A[0][0]    A[0][1]     A[0][2]     A[0][3]
A[1][0]    A[1][1]     A[1][2]     A[1][3]
A[2][0]    A[2][1]     A[2][2]     A[2][3]

A[i][j] adalah variabel bertipe int. Kita bisa mengisi nilainya atau menggunakannya seperti variabel bertipe int biasa.

Perlu juga diketahui bahwa A.length akan memberikan jumlah baris pada A. Untuk mendapatkan jumlah kolom pada A, kita harus mencari jumlah int dalam setiap baris, yaitu yang disimpan pada A[0]. Jumlah kolom ini bisa didapatkan dengan menggunakan A[0].length, atau A[1].length atau A[2].length. (Tidak ada aturan baku yang menyatakan bahwa pada setiap baris suatu array harus memiliki panjang yang sama, dan sebenarnya pada beberapa aplikasi, juga digunakan array dengan panjang yang berbeda-beda pada setiap barisnya. Akan tetapi apabila kita membuat array dengan perintah seperti di atas, maka kita akan selalu mendapatkan array dengan panjang array yang sama.)

Array 3 dimensi juga dibuat dan diolah dengan cara yang sama. Misalnya, array 3 dimensi bertipe int bisa dibuat dengan pernyataan "int[][][] B = new int [7][5][11];". Kita juga bisa mengilustrasikannya sebagai kubus 3-dimensi. Masing-masing bloknya bertipe int yang bisa dipanggil dalam bentuk B[i][j][k]. Array dimensi lain yang lebih tinggi juga mengikuti pola yang sama, akan tetapi akan sangat sulit untuk membuat visualisasi struktur arraynya.


Kita bisa mengisi array multi dimensi sekaligus pada saat dideklarasikan. Ingat sebelumnya bagaimana array 1 dimensi biasa dideklarasikan, dan bagaimana isinya diinisialisasikan, yaitu seperti daftar nilai-nilainya yang dipisahkan dengan koma, dan diletakkan di dalam tanda kurung kurawal { dan }.

Inisialisasi array bisa juga digunakan untuk array multi dimensi, yang terdiri dari beberapa inisialisasi array 1 dimensi, masing-masing untuk setiap barisnya. Misalnya, array A pada gambar di atas dapat dibuat dengan perintah :

int[][] A = { {  1,  0, 12, -1 },
              {  7, -3,  2,  5 },
              { -5, -2,  2,  9 }
};

Jika tidak ada inisialisasi yang diberikan untuk suatu array, maka nilainya akan diisi dengan nilai awal tergantung pada tipenya : nol untuk bilangan, false untuk boolean dan null untuk objek.


Seperti halnya array 1 dimensi, array 2 dimensi juga sering diolah dengan menggunakan perulangan for. UNtuk mengolah semua elemen pada array 2 dimensi, kita bisa menggunakan pernyataan for bertingkat. Jika array A dideklarasikan seperti

int[][]  A  =  new int[3][4];

maka kita bisa mengisi 0 untuk semua elemen pada A dengan menggunakan

for (int baris = 0;  baris < 3;  baris++) {
    for (int kolom = 0;  kolom < 4;  kolom++) {
        A[baris][kolom] = 0;
    }
}

Pertama kali perulangan for bagian luar akan memproses dengan baris = 0. Bagian dalamnya akan mengisi keempat kolom pada baris pertama, yaitu A[0][0] = 0, A[0][1] = 0, A[0][2] = 0, dan A[0][3] = 0. Kemudian perulangan for bagian luar akan mengisi baris kedua, dan seterusnya.

Dan juga, kita bisa menjumlah semua elemen pada A dengan

int jml = 0;
for (int i = 0; i < 3; i++)
    for (int j = 0; j < 4; i++)
        jml = jml + A[i][j];

Untuk mengolah array 3 dimensi, tentunya kita harus menggunakan perulangan for bertingkat 3.


Suatu array 2 dimensi bisa digunakan untuk menyimpan data yang secara alami memang tersusun sebagai baris dan kolom. Misalnya papan catur terdiri dari 8 baris dan 8 kolom. Jika suatu kelas dinamakan PapanCatur untuk merepresentasikan papan catur, maka kita bisa deklarasikan dengan perintah

PapanCatur[][] papan = new PapanCatur[8][8];

Kadang-kadang array 2 dimensi juga digunakan untuk masalah yang tidak terlalu jelas matriksnya. Misalnya perusahaan yang memiliki 25 toko. Anggap masing-masing toko memiliki keuntungan yang didapat pada masing-masing toko tersebut setiap bulan pada tahun 2009. Jika toko-toko tersebut memiliki nomor 0 hingga 24, dan 12 bulan dari Januari 09 hingga Desember 09 dinomori 0 hingga 11, maka data keuntungan dapat disimpan dalam array untung yang dideklarasikan seperti :

double[][] untung = new double[25][12];

untung[3][2] adalah keuntungan yang dibuat oleh toko nomor 3 di bulan Maret. Atau secara umum, untung[noToko][noBulan] adalah keuntungan toko noToko pada bulan noBulan. Dalam contoh ini array 1 dimensi untung[noToko] memiliki arti : Data keuntungan satu toko selama satu tahun.

Anggap array untung telah diisi dengan data. Data ini bisa diolah lebih lanjut. Misalnya, total keuntungan seluruh perusahaan -- sepanjang tahun dari seluruh toko -- dapat dihitung dengan menjumlahkan semua elemen pada array :

double totalUntung;  // Total keuntungan perusahaan tahun 2009
 
totalUntung = 0;
for (int toko = 0; toko < 25; toko++) {
    for (int bulan = 0; bulan < 12; bulan++)
        totalUntung += untung[toko][bulan];
}

Kadang-kadang kita juga perlu menghitung hanya satu baris atau satu kolom saja, bukan keseluruhan array. Misalnya, kita ingin menghitung keuntungan total perusahaan pada bulan Desember, yaitu bulan nomor 11, maka kita bisa gunakan perulangan :

double untungDesember = 0.0;
for (noToko = 0; noToko < 25; noToko++)
    untungDesember += untung[noToko][11];

Sekarang mari kita buat array 1 dimensi yang berisi total keuntungan seluruh toko setiap bulan :

double[] untungBulanan;  // Keuntungan setiap bulan
untungBulanan = new double[12];
 
for (int bulan = 0; bulan < 12; bulan++) {
    // hitung total keuntungan semua toko bulan ini
    untungBulanan[bulan] = 0.0;
    for (int toko = 0; toko < 25; toko++) {
        untungBulanan[bulan] += profit[toko][bulan];
    }
}

Sebagai contoh terakhir untuk mengolah array keuntungan, misalnya kita ingin tahu toko mana yang menghasilkan keuntungan terbesar sepanjang tahun. Untuk menghitungnya, kita harus menjumlahkan keuntungan setiap toko sepanjang tahun. Dalam istilah array, ini berarti kita ingin mengetahui jumlah setiap baris pada array. Kita perlu mencatat hasil perhitungannya untuk mencari mana toko dengan keuntungan terbesar.

double untungMaks; // Keuntungan terbesar suatu toko
int tokoTerbaik; // Nomor toko yang memiliki keuntungan terbesar
 
double total = 0.0;    // Total keuntungan suatu toko
 
// Pertama-tama hitung keuntungan dari toko nomo 0
 
for (int bulan = 0;  bulan < 12; bulan++)
    total += untung[0][bulan];
 
tokoTerbaik = 0; // Mulai dengan anggapan toko nomor 0
untungMaks = total;  // adalah toko paling menguntungkan
 
// Sekarang kita lihat seluruh toko, dan setiap kali
// kita melihat toko dengan keuntungan lebih besar dari
// untungMaks, kita ganti untungMaks dan tokoTerbaik
// dengan toko tersebut
 
for (toko = 1; toko < 25; toko++) {
 
    // Hitung keuntungan toko tersebut sepanjang tahun
    total = 0.0;
    for (bulan = 0; bulan < 12; bulan++)
        total += untung[toko][bulan];
 
    // Bandingkan keuntungan toko ini dengan untungMaks
    if (total > untungMaks) {
        untungMaks = total;    // keuntungan terbesar saat ini
        tokoTerbaik = toko;    // datang dari toko ini
    }
 
} // akhir for
 
// Di sini, untungMaks adalah keuntungan terbesar dari 25 toko
// dan tokoTerbaik adalah toko dengan keuntung tersebut
// (Mungkin juga ada toko yang menghasilkan keuntungan
// yang persis sama.)

 

Komentar

tanya array dg RMS

Mohon bantuannya....
Gimana caranya menyimpan array 2 dimensi kedalam rms (record mngaement system) ???
mohon penceranhanya, saya masih baru d' J2ME

email me : eagoenx@gmail.com

Suhu, saya mau tanya sesuatu.

Suhu, saya mau tanya sesuatu. Saya newbie dan otodidak belajar java. Saya hendak membuat generator angka pada matriks.

Misalkan saya punya matriks berukuran 3x3. Kemudian saya punya angka dari 1 hingga 4.

System akan memasukkan angka ke matriks secara otomatis dimulai dari 1-4 lalu kembali lagi ke 1 dst.

jika ordinat 1,1 dinyatakan sebagai [b][k] maka: angka [b][k] tidak sama dengan [b][k-1], [b-1][k+1], [b-1][k], int[b-1][k-1].

Fungsi matriks, agar value berbeda 8 arah mata angin.

Suhu, saya mau tanya sesuatu. Saya newbie dan otodidak belajar java. Saya hendak membuat generator angka pada matriks.

Misalkan saya punya matriks berukuran 3x3. Kemudian saya punya angka dari 1 hingga 4.

System akan memasukkan angka ke matriks secara otomatis dimulai dari 1-4 lalu kembali lagi ke 1 dst.

Disini saya gambarkan rumus yg hendak saya buat.

[00][01][02]  ordinate 11 tidak boleh punya value yang sama dengan sekelilingnya  00,01,02

[10][11][12]                                                                                                 10,11,12

[20][21][22]                                                                                                  20,21,22

jika ordinat 1,1 dinyatakan sebagai [b][k] maka: angka [b][k] ≠ [b][k-1], [b-1][k+1], [b-1][k], int[b-1][k-1].

Fungsi matriks, agar value berbeda 8 arah mata angin.

Suhu, saya mau tanya sesuatu. Saya newbie dan otodidak belajar java. Saya hendak membuat generator angka pada matriks.

Misalkan saya punya matriks berukuran 3x3. Kemudian saya punya angka dari 1 hingga 4.

System akan memasukkan angka ke matriks secara otomatis dimulai dari 1-4 lalu kembali lagi ke 1 dst.

Disini saya gambarkan rumus yg hendak saya buat.

[00][01][02]  ordinate 11 tidak boleh punya value yang sama dengan sekelilingnya  00,01,02

[10][11][12]                                                                                                  10,11,12

[20][21][22]                                                                                                  20,21,22

jika ordinat 1,1 dinyatakan sebagai [b][k] maka: angka [b][k] ≠ [b][k-1], [b-1][k+1], [b-1][k], int[b-1][k-1].

ada contoh program fungsi

ada contoh program fungsi ngk,,..

man_cHoys

Bantu Coding array seperti ini ?

Outputnya seperti ini :

-------------------------------------

-------Menu Makanan---------

------------------------------------

1. Gulai Kambing

2. Soto Ayam

3. Nasi Goreng

4. Bakso

Masukkan Pilihan Anda [1-4] = 2

Menu Pilihan Anda adalah Soto Ayam

array multidimensi

saya mau melakukan penyimpanan string kedalam array muktidimensi dengan jumlah kolom yang tidak sama ( tidak dapat ditentukan ) pada tiap barisnya, caranya gimana ??

array multidimensi

saya mau melakukan penyimpanan string kedalam array muktidimensi dengan jumlah kolom yang tidak sama ( tidak dapat ditentukan ) pada tiap barisnya, caranya gimana ??

Membuat Matriks Random

Bagaiman cara membuat matrik dengan Scanner dimana saat kita masukkan angka maka akan keluar matrik dengan ukuran yang kita masukkan?

Contoh:

Masukkan Angka : 3

maka akan keluar matrik 3 x 3

Tolong yang bisa, minta source codenya ke forum ini, untuk tugas

re: Matriks

import java.io.*;
public class Matriks {
    public static void main(String [] args) throws Exception {
        BufferedReader input=new BufferedReader(new InputStreamReader(System.in));

        int baris = 0;
        int kolom = 0;

        System.out.println("Masukkan Jumlah Baris:");
        baris = Integer.parseInt(input.readLine());

        System.out.println("Masukkan Jumlah Kolom:");
        kolom = Integer.parseInt(input.readLine());
        System.out.println();

        int [][] Matriks = new int[baris][kolom];


        for (int i=0; i<baris; i++) {
            for (int j=0; j<kolom; j++) {
                Matriks[i][j]=(int) (Math.random()*10);
            }
        }

        for (int i=0; i<baris; i++) {
            for (int j=0; j<kolom; j++) {
                System.out.print(Matriks[i][j]+" ");
            }
            System.out.println("");
        }

    }
}