Bab 2, Seleksi Kondisi

Ringkasan materi

Dalam bab ini, kita akan membuat program yang akan memiliki lebih dari 1 kondisi, dan setiap kondisinya akan memiliki keadaan program yang berbeda-beda. Berbeda disini adalah berbeda output program maupun nilai dari suatu variabel bergantung pada kondisi yang ditawarkan dalam program.

Kita disini akan mengenal bentuk percabangan if-else dan switch-case.

Percabangan if-else

Bentuk umum if-else di Java sebagai berikut

if (kondisi) {
    // statement jika kondisi benar
} else {
    // statement jika kondisi salah
}

Statement yang didalam blok if akan dijalankan ketika kondisi yang diajukan bernilai true. Contoh :

int x = 4;

// jika x adalah genap
if (x % 2 == 0) {
    System.out.println("ini bilangan genap");
} else {
    System.out.println("ini bilangan ganjil");
}

Potongan kode diatas akan mencetak ini bilangan genap. Mengapa?

Karena nilai x yaitu 4 memenuhi kondisi x mod 2 = 0. Operator mod atau % akan menghitung sisa bagi dari 2 bilangan.

Jika nilai x diganti bilangan ganjil, akan menghasilkan output ini bilangan ganjil.

Cukup mudah, bukan?

Nested if

Sama seperti bentuk if-else pada umumnya. Namun di dalam blok if maupun else terdapat blok if yang lain.

if (kondisi) {
    // blok statement akan dijalankan jika kondisi bernilai true
    if (kondisi1) {
        // statement jika kondisi1 benar
    } else if (kondisi2) {
        // statement jika kondisi1 salah, dan kondisi2 benar
    .
    .
    .
    } else {
        // jika semua kondisi1, kondisi2, ... salah
    }
}

Contoh implementasi Nested if

public static void main(String[] args) {
    int nilai = 5;
    if (nilai * 2 < 40) {
        nilai += 5;
    }
    if (nilai <= 10) {
        System.out.println("kacang ");
        if (nilai % 2 == 1) {
            System.out.println("goreng ");
        }
        else {
            System.out.println("rebus ");
        }
    }
    else {
        System.out.println("bukan kacang ");
        if (nilai % 2 == 1) {
            System.out.println("goreng ");
        }
        else {
            System.out.println("rebus ");
        }
    }
}

Switch-case

Switch-case digunakan untuk menyeleksi nilai dari suatu variabel.

Bentuk umumnya sebagai berikut

switch (variabel_yang_ingin_dipilih_nilainya) {
    case nilai1 : {
        // statement
        break;
    }
    case nilai2 : {
        // statement
        break;
    }
    .
    .
    .
    default : {
        // statement
        break;
    }

}

Contoh penggunaan Switch-case, untuk mengonversi satuan kecepatan.

Kode ini bisa diambil dari folder src.

public static void main(String[] args) {

    Scanner in = new Scanner(System.in);
    String satuanAsal = in.next();
    String satuanTujuan = in.next();
    double nilaiAwal = in.nextDouble();
    double nilaiAkhir = 0.0;

    switch (satuanAsal) {
        case "kmh" : {
            switch (satuanTujuan) {
                case "ms" : {
                    nilaiAkhir = nilaiAwal * 0.2778;
                    break;
                }
                case "knot" : {
                    nilaiAkhir = nilaiAwal / 1.852;
                    break;
                }
            }
            break;
        }
        case "ms" : {
            switch (satuanTujuan) {
                case "kmh" : {
                    nilaiAkhir = nilaiAwal * 3.6;
                    break;
                }
                case "knot" : {
                    nilaiAkhir = nilaiAwal * 1.943844492;
                    break;
                }
            }
            break;
        }
        case "knot" : {
            switch (satuanTujuan) {
                case "kmh" : {
                    nilaiAkhir = nilaiAwal * 1.852;
                    break;
                }
                case "ms" : {
                    nilaiAkhir = nilaiAwal * 0.514;
                    break;
                }
            }
            break;
        }
    }
    System.out.printf("%.3f\n", nilaiAkhir);

}

Contoh input dan output

-> knot kmh 1
1.852