Java Array

18

Transcript of Java Array

Page 1: Java Array
Page 2: Java Array
Page 3: Java Array

Misalkan anda diminta membuat program untuk menyimpan dan mengolah data nilai ujian mahasiswa dari suatu kelas yang terdiri dari 30 peserta.

Masalah pertama yang muncul di benak anda adalah bagaimana cara menyimpan nilai dari 30 orang tersebut.

Sebelumnya kita sudah belajar bahwa sebuah variabel dapat digunakan untuk menyimpan sebuah nilai/data.

Karena ada 30 orang, maka kita dapat membuat 30 variabel double untuk menyimpan nilai setiap peserta.

double nilai_1, nilai_2, nilai_3, nilai_4, nilai_5, nilai_6, nilai_7, nilai_8, nilai_9, nilai_10, nilai_11, nilai_12, nilai_13, nilai_14, nilai_15, nilai_16, nilai_17, nilai_18, nilai_19, nilai_20, nilai_21, nilai_22, nilai_23, nilai_24, nilai_25, nilai_26, nilai_27, nilai_28, nilai_29, nilai_30;

double nilai_1, nilai_2, nilai_3, nilai_4, nilai_5, nilai_6, nilai_7, nilai_8, nilai_9, nilai_10, nilai_11, nilai_12, nilai_13, nilai_14, nilai_15, nilai_16, nilai_17, nilai_18, nilai_19, nilai_20, nilai_21, nilai_22, nilai_23, nilai_24, nilai_25, nilai_26, nilai_27, nilai_28, nilai_29, nilai_30;

Page 4: Java Array

Phuihh…… Sungguh melelahkan mengetik hal yang sama berulang-ulang.

Dan penderitaan belum berakhir….Coba bayangkan saat menulis kode untuk meminta input ke 30 variabel ini, kemudian mencari rata-rata semua nilai, mencari nilai maksimum, minimum, dan berbagai operasi lainnya. Dengan cara seperti ini panjang kode program bisa dengan mudah mencapai ribuan baris.

System.out.print ("Nilai 1: ");nilai_1 = in.nextInt();System.out.print ("Nilai 2: ");nilai_2 = in.nextInt();System.out.print ("Nilai 3: ");nilai_3 = in.nextInt();System.out.print ("Nilai 4: ");nilai_4 = in.nextInt();System.out.print ("Nilai 5: ");nilai_5 = in.nextInt();...

System.out.print ("Nilai 1: ");nilai_1 = in.nextInt();System.out.print ("Nilai 2: ");nilai_2 = in.nextInt();System.out.print ("Nilai 3: ");nilai_3 = in.nextInt();System.out.print ("Nilai 4: ");nilai_4 = in.nextInt();System.out.print ("Nilai 5: ");nilai_5 = in.nextInt();...

Page 5: Java Array

Masalah yang kita hadapi sebelumnya dapat dengan mudah diselesaikan dengan menggunakan struktur data Array.

Misalnya untuk menyimpan nilai 30 orang mahasiswa, kita hanya perlu satu kali mendeklarasikan array yang dapat menampung 30 elemen berbeda :

double[] nilai;nilai = new double[30];

Setelah itu, kalau mau mengakses elemen pertama kita tinggal menulis:

nilai[0]

Dan untuk elemen ke-2, 3, 4, dst:

nilai[1], nilai[2], nilai[3], …

Page 6: Java Array

Setiap elemen pada array dapat diakses menggunakan indeks: 0, 1, 2, dst.

Hal ini sangat memudahkan pada saat memproses seluruh elemen satu per satu.Misalnya saat menerima input, mencari rata-rata nilai, atau output ke layar.double[] nilai = new double[30];double jumlah, rata_rata; int i;Scanner in = new Scanner(System.in);

for (i=0; i<30; i++) { System.out.print ("Nilai " + (i+1) + " : "); nilai[i] = in.nextInt(); // minta input nilai}

jumlah = 0;for (i=0; i<30; i++) { // Hitung jumlah dari semua nilai jumlah += nilai[i];}

rata_rata = jumlah / 30; // Hitung rata-ratanyaSystem.out.println ("Rata-rata Nilai = " + rata_rata);

double[] nilai = new double[30];double jumlah, rata_rata; int i;Scanner in = new Scanner(System.in);

for (i=0; i<30; i++) { System.out.print ("Nilai " + (i+1) + " : "); nilai[i] = in.nextInt(); // minta input nilai}

jumlah = 0;for (i=0; i<30; i++) { // Hitung jumlah dari semua nilai jumlah += nilai[i];}

rata_rata = jumlah / 30; // Hitung rata-ratanyaSystem.out.println ("Rata-rata Nilai = " + rata_rata);

Page 7: Java Array

Contoh operasi pada elemen array dan perubahaan keaadan array tersebut di memory :

nilai[0]

nilai[1]

nilai[2]

nilai[3]

nilai[4]

nilai[5]

nilai[6]

nilai[7]

Keadaan array di memory

nilai[4] = 10nilai[3] = 5nilai[7] = 2nilai[2] = 1nilai[5] = nilai[2]nilai[1] = nilai[3] + nilai[4]Nilai[6] = 5*nilai[3] + 10

10

5

2

1

1

15

35

Page 8: Java Array

Pada saat dideklarasikan, suatu array dapat diisi (diinisialisasi) dengan suatu nilai awal dengan cara seperti berikut ini:

int[] Data = { 10, 20, 30, 40, 50 };

Artinya sama dengan:

Data[0] = 10; Data[1] = 20; Data[2] = 30; Data[3] = 40; Data[4] = 50;

Contoh Lain:

untuk menyimpan jumlah hari dari setiap bulan (januari, februari, dst)byte[] Bulan = { 31,28,31,30,31,30,31,31,30,31,30,31 };

untuk menyimpan huruf vokalchar[] Vokal = { 'a', 'e' ,'i', 'o', 'u' };

Page 9: Java Array

Contoh 1:

Kita akan membuat sebuah program untuk mencatat kehadiran siswa dalam suatu kelas. Program akan meminta input nomor absen siswa-siswa yang hadir dan menyimpan data kehadiran tersebut dalam sebuah Array.

Setelah itu program akan menampilkan nomor absen siswa yang hadir dan juga yang tidak hadir secara berurutan.

Absensi Kelas Hogwarts 2007/2008Banyaknya Siswa : 5

Silahkan masukkan nomor absen siswa yang hadir (akhiri dengan 0)Nomor Absen : 5Nomor Absen : 3Nomor Absen : 2Nomor Absen : 0

Daftar siswa yang hadir : 2 3 5Daftar siswa yang absen : 1 4

Page 10: Java Array

Contoh 1:

IDE: Gunakan sebuah array of boolean (false berarti absen, true berarti hadir) dan indeks dari array tersebut menyatakan nomor absen siswa.

Jika siswa bernomor 2, 3, dan 5 hadir maka keadaan arraynya menjadi :

0 false

1 false

2 true

3 true

4 false

5 true

Page 11: Java Array

public static void main (String args[]) { boolean[] Absensi; int N, i; Scanner in = new Scanner(System.in); System.out.println ("Absensi Kelas Hogwarts 2007/2008"); System.out.print ("Banyaknya Siswa : "); N = in.nextInt(); Absensi = new boolean[N+1]; for (i=1; i<=N; i++) // Inisialisasi Awal Absensi[i] = false;

System.out.println ("Masukkan nomor siswa hadir (akhiri dengan 0)");

do { System.out.print ("Nomor Absen : ");

i = in.nextInt(); if (i>=1 && i<=N) Absensi[i] = true; } while (i != 0);

public static void main (String args[]) { boolean[] Absensi; int N, i; Scanner in = new Scanner(System.in); System.out.println ("Absensi Kelas Hogwarts 2007/2008"); System.out.print ("Banyaknya Siswa : "); N = in.nextInt(); Absensi = new boolean[N+1]; for (i=1; i<=N; i++) // Inisialisasi Awal Absensi[i] = false;

System.out.println ("Masukkan nomor siswa hadir (akhiri dengan 0)");

do { System.out.print ("Nomor Absen : ");

i = in.nextInt(); if (i>=1 && i<=N) Absensi[i] = true; } while (i != 0);

Contoh 1:

Page 12: Java Array

System.out.println ("Daftar siswa yang hadir : "); for (i=1; i<=N; i++) if (Absensi[i] == true) System.out.println (i + " ");

System.out.print ("\nDaftar siswa yang absen : "); for (i=1; i<=N; i++) if (Absensi[i] == false) System.out.println (i + " ");

}

System.out.println ("Daftar siswa yang hadir : "); for (i=1; i<=N; i++) if (Absensi[i] == true) System.out.println (i + " ");

System.out.print ("\nDaftar siswa yang absen : "); for (i=1; i<=N; i++) if (Absensi[i] == false) System.out.println (i + " ");

}

Contoh 1:

Page 13: Java Array

Contoh 2:

Buatlah program untuk melakukan polling pendapat dari beberapa orang dan melaporkan hasil dari polling tersebut.

Berapakah uang saku anda per-minggu :1.Rp.02.Rp.50.0003.Rp.100.0004.Rp.200.0005.>= Rp.500.000

Pilihan Anda (0 untuk keluar) ? 5Pilihan Anda (0 untuk keluar) ? 3Pilihan Anda (0 untuk keluar) ? 3Pilihan Anda (0 untuk keluar) ? 1Pilihan Anda (0 untuk keluar) ? 0

Hasil Polling:1 orang memilih pilihan 12 orang memilih pilihan 3

1 orang memilih pilihan 5

Page 14: Java Array

0 0

1 10

2 0

3 20

4 0

5 5

Contoh 2:

IDE: Gunakan array of int sebagai counter untuk menghitung frekuensi dari setiap pilihan.

Misalnya untuk keadaan array di bawah ini berarti pilihan nomor 1 telah dipilih sebanyak 10 kali, nomor 3 sebanyak 20 kali, dan nomor 5 dipilih 5 kali. Tidak ada orang yang memilih nomor 2 dan 4.

Page 15: Java Array

public static void main (String args[]) {

int[] Poll = new int[10]; int N, i; Scanner in = new Scanner(System.in); N = 5; // Jumlah Pilihan for (i=1; i<=N; i++) // Inisialisasi Awal Poll[i] = 0;

System.out.println ("Berapakah uang saku anda per-minggu :"); System.out.println ("1. Rp.0"); System.out.println ("2. Rp.50.000"); System.out.println ("3. Rp.100.000"); System.out.println ("4. Rp.200.000"); System.out.println ("5. >= Rp.500.000"); do { System.out.println ("Pilihan Anda (0 untuk keluar) ? ");

i = in.nextInt(); if (i>=1 && i<=N) Poll[i]++; } while (i != 0);

public static void main (String args[]) {

int[] Poll = new int[10]; int N, i; Scanner in = new Scanner(System.in); N = 5; // Jumlah Pilihan for (i=1; i<=N; i++) // Inisialisasi Awal Poll[i] = 0;

System.out.println ("Berapakah uang saku anda per-minggu :"); System.out.println ("1. Rp.0"); System.out.println ("2. Rp.50.000"); System.out.println ("3. Rp.100.000"); System.out.println ("4. Rp.200.000"); System.out.println ("5. >= Rp.500.000"); do { System.out.println ("Pilihan Anda (0 untuk keluar) ? ");

i = in.nextInt(); if (i>=1 && i<=N) Poll[i]++; } while (i != 0);

Contoh 2:

Page 16: Java Array

System.out.println ("Hasil Polling : ");

for (i=1; i<=N; i++) if (Poll[i] > 0) System.out.println (Poll[i] + " orang memilih pilihan " + i);}

System.out.println ("Hasil Polling : ");

for (i=1; i<=N; i++) if (Poll[i] > 0) System.out.println (Poll[i] + " orang memilih pilihan " + i);}

Contoh 2:

Page 17: Java Array

// Data[] adalah array // bil adalah bilangan yang akan dicari

int i;

i = 0; while (i<Data.length && Data[i]!=bil) { i++; }

if (i<Data.length) System.out.println(“Data ditemukan pada index “+i); else System.out.println(“Data tidak ditemukan.”);

// Data[] adalah array // bil adalah bilangan yang akan dicari

int i;

i = 0; while (i<Data.length && Data[i]!=bil) { i++; }

if (i<Data.length) System.out.println(“Data ditemukan pada index “+i); else System.out.println(“Data tidak ditemukan.”);

Contoh 3:

mencari kemunculan suatu bilangan dalam suatu array of int. Jika ditemukan, akan menampilkan indeks dari bilangan yang dicari, jika tidak ditemukan, akan menampilkan tidak ditemukan.

Page 18: Java Array

Contoh 5:

Buatlah sebuah fungsi untuk mengkonversi bilangan desimal (basis 10) ke bilangan biner (basis 2) dan kemudian menampilkan bilangan biner tersebut.

Cara konversi basis 10 ke basis 2 :

1210 = ?2

12 % 2 = 012 / 2 = 66 % 2 = 06 / 2 = 33 % 2 = 13 / 2 = 11 % 2 = 1

Baca hasil modulo dari bawah ke atas, jadi :

1210 = 11002