Tutorial Belajar Java Part 31: Percabangan Kondisi IF ELSE IF Bahasa Java

Masih tentang kondisi percabangan kode program dengan perintah IF, kali ini akan kita bahas bentuk yang lebih kompleks, yakni kondisi IF ELSE IF. Struktur ini tidak lain terdiri dari gabungan beberapa kondisi IF ELSE yang saling bersambung.


Pengertian Kondisi IF ELSE IF Bahasa Java

Pada dasarnya, kondisi IF ELSE IF adalah sebuah struktur logika program yang di dapat dengan cara menyambung beberapa perintah IF ELSE menjadi sebuah kesatuan.

Jika kondisi pertama tidak terpenuhi atau bernilai false, maka kode program akan lanjut ke kondisi IF di bawahnya. Jika ternyata tidak juga terpenuhi, akan lanjut lagi ke kondisi IF di bawahnya lagi, dst hingga blok ELSE terakhir atau terdapat kondisi IF yang menghasilkan nilai true.

Berikut format dasar penulisan kondisi IF ELSE IF dalam bahasa Java:

if (condition_1) {
  // Kode program yang dijalankan jika condition_1 berisi nilai True
}
else if (condition_2) {
  // Kode program yang dijalankan jika condition_2 berisi nilai True
}
else if (condition_3) { 
  // Kode program yang dijalankan jika condition_3 berisi nilai True 
}
else  { 
  // Kode program yang dijalankan jika semua kondisi tidak terpenuhi
}

Mari kita lihat contoh prakteknya.


Contoh Kode Program Percabangan IF ELSE IF Java

Sebagai contoh pertama, saya ingin membuat kode program untuk menampilkan nilai. User diminta menginput sebuah huruf antara 'A' – 'E'. Kemudian program akan menampilkan hasil yang berbeda-beda untuk setiap huruf, termasuk jika huruf tersebut di luar 'A' – 'E'.

Berikut contoh kode programnya:

import java.util.Scanner;

class BelajarJava {
  public static void main(String args[]){
    
    char nilai;
    Scanner input = new Scanner(System.in);
    
    System.out.print("Input Nilai Anda (A - E): ");
    nilai = input.next().charAt(0);
    
    if (nilai == 'A' ) {
      System.out.println("Pertahankan!");
    }
    else if (nilai == 'B' ) {
      System.out.println("Harus lebih baik lagi");
    }
    else if (nilai == 'C' ) {
      System.out.println("Perbanyak belajar");
    }
    else if (nilai == 'D' ) {
      System.out.println("Jangan keseringan main");
    }
    else if (nilai == 'E' ) {
      System.out.println("Kebanyakan bolos...");
    }
    else {
      System.out.println("Maaf, format nilai tidak sesuai");
    }
   
  }
}

Hasil kode program:

Input Nilai Anda (A - E): A
Pertahankan!

Input Nilai Anda (A - E): D
Jangan keseringan main

Input Nilai Anda (A - E): E
Kebanyakan bolos...

Input Nilai Anda (A - E): F
Maaf, format nilai tidak sesuai

Di baris 6 saya mendefinisikan sebuah variabel nilai sebagai char. Variabel nilai ini kemudian dipakai untuk menampung input dari perintah input.next().charAt(0) di baris 10. Ini adalah proses input nilai char dalam bahasa Java.

Mulai dari baris 12 hingga 29, terdapat 5 kali pemeriksaan kondisi, yakni satu untuk setiap block IF ELSE. Dalam setiap kondisi, isi variabel nilai akan di diperiksa apakah berisi karakter 'A', 'B', hingga 'E'. Jika salah satu kondisi terpenuhi, maka block kode program yang sesuai akan di eksekusi.

Jika ternyata nilai inputan bukan salah satu dari karakter 'A' – 'E', maka block ELSE di baris 28 lah yang akan dijalankan.

Setiap kondisi dari block IF ELSE IF bisa diisi dengan perbandingan yang lebih kompleks, seperti contoh berikut:

import java.util.Scanner;

class BelajarJava {
  public static void main(String args[]){
    
    byte nilai;
    Scanner input = new Scanner(System.in);
    
    System.out.print("Input Nilai Anda (0 - 100): ");
    nilai = input.nextByte();
    
    if (nilai >= 90 ) {
      System.out.println("Pertahankan!");
    }
    else if (nilai >= 80 && nilai < 90) {
      System.out.println("Harus lebih baik lagi");
    }
    else if (nilai >= 60 && nilai < 80) {
      System.out.println("Perbanyak belajar");
    }
    else if (nilai >= 40 && nilai < 60) {
      System.out.println("Jangan keseringan main");
    }
    else if (nilai < 40) {
      System.out.println("Kebanyakan bolos...");
    }
    else {
      System.out.println("Maaf, format nilai tidak sesuai");
    }
   
  }
}

Di sini saya memodifikasi sedikit kode program sebelumnya. Sekarang nilai inputan berupa angka antara 0 hingga 100.

Angka inputan ini ditampung ke dalam variabel nilai yang sekarang di set sebagai tipe data byte di baris 5. Tipe data byte adalah jenis terkecil dari tipe data angka bulat (integer) dalam bahasa Java, yakni bisa menampung antara -128 sampai dengan +127.

Di baris 12, variabel nilai di periksa apakah berisi angka yang lebih dari 90. Jika iya, tampilkan teks "Pertahankan!".

Jika kondisi di baris 12 tidak terpenuhi (yang artinya isi variabel nilai kurang dari 90), maka kode program akan lanjut ke kondisi ELSE IF berikutnya di baris 15. Di sini saya menggabung dua buah kondisi pemeriksaan dengan operator logika && (operator AND). Kondisi if(nilai >= 80 && nilai < 90) hanya akan terpenuhi jika isi variabel nilai berada dalam rentang 80 sampai 89.

Ketika membuat kondisi perbandingan, kita harus hati-hati dengan penggunaan tanda, apakah ingin menggunakan tanda lebih besar saja (>) atau tanda lebih besar sama dengan (>=) karena bisa mempengaruhi hasil akhir.

Jika ternyata kondisi ini tidak dipenuhi juga (artinya isi variabel nilai kurang dari 80), program akan lanjut ke kondisi if(nilai >= 60 && nilai < 80) di baris 18, yakni apakah isi variabel nilai berada dalam rentang 60 – 79. Demikian seterusnya hingga kondisi terakhir if(nilai < 40) di baris 24.

Jika semua kondisi tidak terpenuhi, jalankan block ELSE di baris 27.

Berikut hasil percobaan dari kode program di atas:

Input Nilai Anda (0 - 100): 95
Pertahankan!

Input Nilai Anda (0 - 100): 60
Perbanyak belajar

Input Nilai Anda (0 - 100): 30
Kebanyakan bolos...

Yang cukup unik adalah, jika kita memberikan nilai di luar rentang 0 – 100, akan tetap ditangkap oleh kondisi IF di baris 10 atau di baris 22:

Input Nilai Anda (0 - 100): 120
Pertahankan!

Input Nilai Anda (0 - 100): -10
Kebanyakan bolos...

Ini terjadi karena nilai 120 tetap memenuhi syarat if (nilai >= 90), dan nilai -10 juga tetap memenuhi syarat if (nilai < 40). Silahkan anda modifikasi kode program di atas agar ketika diinput angka di luar dari rentang 0 – 100, tampil teks "Maaf, format nilai tidak sesuai". Untuk hal ini kita cuma perlu mengubah / menambah 2 kondisi saja.

Namun jika diinput angka 200, yang akan tampil adalah pesan error berikut:

Exception in thread "main" java.util.InputMismatchException: Value out of range. 
Value:"200" Radix:10
        at java.base/java.util.Scanner.nextByte(Scanner.java:2008)
        at java.base/java.util.Scanner.nextByte(Scanner.java:1956)
        at BelajarJava.main(BelajarJava.java:10)

Ini terjadi karena angka 200 sudah berada di luar jangkauan tipe data byte. Solusi sederhana adalah dengan menukar tipe data byte dengan tipe data yang memiliki jangkauan lebih besar seperti int.

Atau idealnya, kita bisa buat kode tambahan untuk proses validasi. Terkait proses validasi inputan rencananya akan bahas dalam tutorial terpisah.


Dalam tutorial belajar Java kali ini kita telah membahas konsep struktur IF ELSE IF, yang tidak lain terdiri dari beberapa kondisi IF yang saling bersambung.

Berikutnya, akan dilanjutkan ke struktur kondisi SWITCH, yang dalam banyak hal merupakan alternatif penulisan dari kondisi IF ELSE IF yang baru saja kita pelajari.

4 Comments

  1. Anonymous
    01 Jun 22
  2. Feri
    01 Jun 22
  3. Musashi
    19 Jun 22

Add Comment

Leave a Reply to Anonymous Cancel reply