Seleksi
Pernyataan Seleksi tunggal if
Contoh lain, untuk menghitung luas lingkaran dengan syarat radius harus lebih dari
0.
2
Catatan:
Jika pernyataan yang dikerjakan dalam bodi if lebih dari satu pernyataan,
sekelompok pernyataan itu harus diapit dengan tanda kurung kurawal ({ }). Contoh
di atas menjadi seperti berikut.
if ( nilai >= 60 ) {
System.out.println( "Lulus" );
System.out.println( "Selamat, terus dipertahankan" );
}
else {
System.out.println( "Gagal" );
System.out.println( "Jangan putus asa, belajar lagi" );
}
Operator Kondisional
System.out.println( "D" );
else
System.out.println( "E" );
Jika variabel nilaiMhs lebih besar dari atau sama dengan 90, empat kondisi pertama
dalam pernyataan if… else bersarang akan benar, tetapi hanya pernyataan di
bagian if dari pernyataan if… else pertama yang akan dijalankan. Setelah
pernyataan itu dijalankan, bagian lain dari pernyataan "terluar" if…else dilewati.
Banyak programmer lebih suka menulis pernyataan bertingkat sebelumnya if… else
seperti berikut.
if ( studentGrade >= 90 )
System.out.println( "A" );
else if ( studentGrade >= 80 )
System.out.println( "B" );
else if ( studentGrade >= 70 )
System.out.println( "C" );
else if ( studentGrade >= 60 )
System.out.println( "D" );
else
System.out.println( "F" );
Kedua bentuk ini identik kecuali spasi dan indentasi, yang diabaikan oleh compiler.
Bentuk terakhir menghindari lekukan kode di sebelah kanan. Lekukan seperti itu
sering menyisakan sedikit ruang pada baris kode sumber, memaksa baris untuk
dipisahkan.
muncul untuk menunjukkan bahwa jika x lebih besar dari 5, pernyataan if bersarang
menentukan apakah y juga lebih besar dari 5. Jika demikian, string "x dan y adalah >
6
5" akan ditampilkan. Sebaliknya, tampak bahwa jika x tidak lebih besar dari 5,
bagian else dari if…else mengeluarkan string "x adalah <= 5". Awas! Pernyataan
bertingkat if… else ini tidak dijalankan seperti yang terlihat. Kompilator sebenarnya
mengartikan pernyataan itu sebagai
if ( x > 5 )
if ( y > 5 )
System.out.println( "x dan y adalah > 5" );
else
System.out.println( "x adaalah <= 5" );
di mana tubuh if pertama adalah if… else bertumpuk. Pernyataan if yang luar
menguji apakah x lebih besar dari 5. Jika demikian, eksekusi dilanjutkan dengan
menguji apakah y juga lebih besar dari 5. Jika kondisi kedua benar, string yang
tepat— "x dan y adalah > 5" —ditampilkan. Namun, jika kondisi kedua salah, string
"x adalah <= 5" ditampilkan, meskipun kita tahu bahwa x lebih besar dari 5. Sama
buruknya, jika kondisi pernyataan if luar salah, bagian dalam if… else dilewati dan
tidak ada yang ditampilkan.
Untuk memaksa pernyataan bertingkat if… else untuk dieksekusi seperti yang
dimaksudkan semula, kita harus menulisnya sebagai berikut:
if ( x > 5 ) {
if ( y > 5 )
System.out.println( "x dan y adalah > 5" );
}
else
System.out.println( "x adaalah <= 5" );
Tanda kurung kurawal menunjukkan bahwa if yang kedua ada di badan if pertama
dan else dikaitkan dengan if pertama.
Blok
blok dapat ditempatkan di manapun dalam sebuah program yang satu pernyataan
dapat ditempatkan.
Contoh berikut menyertakan blok di bagian lain dari pernyataan if… else:
if ( nilai >= 60 )
System.out.println( "Lulus" );
else {
System.out.println( "Gagal" );
System.out.println( "Anda harus mengulangi lagi." );
}
Dalam kasus ini, jika nilai kurang dari 60, program akan mengeksekusi kedua
pernyataan di badan else dan mencetak
Gagal
Anda harus mengulangi lagi."
Perhatikan tanda kurung kurawal yang mengelilingi dua pernyataan di klausa else.
Kurung kurawal ini penting. Tanpa kurung kurawal, pernyataan
System.out.println( "Anda harus mengulangi lagi." );
akan berada di luar tubuh bagian else dari pernyataan if… else dan akan dieksekusi
terlepas dari apakah nilainya kurang dari 60.
Kesalahan sintaksis (misalnya, ketika satu tanda kurung dalam blok ditinggalkan dari
program) ditangkap oleh kompilator. Kesalahan logika (misalnya, ketika kedua
kurung kurawal di blok ditinggalkan dari program) memiliki efeknya pada waktu
eksekusi. Kesalahan logika yang fatal menyebabkan program gagal dan berhenti
sebelum waktunya. Kesalahan logika nonfatal memungkinkan program untuk terus
dijalankan tetapi menyebabkannya menghasilkan hasil yang salah.
Sama seperti sebuah blok dapat ditempatkan di mana saja sebuah pernyataan
dapat ditempatkan, itu juga memungkinkan untuk memiliki pernyataan kosong.
Sintaks:
8
switch(expression) {
case x:
// code block
break;
case y:
// code block
break;
default:
// code block
}
Contoh di bawah ini menggunakan angka hari kerja untuk menentukan nama hari
kerja.
public class MyClass {
public static void main(String[] args) {
int day = 4;
switch (day) {
case 1:
System.out.println("Monday");
break;
case 2:
System.out.println("Tuesday");
break;
case 3:
System.out.println("Wednesday");
break;
case 4:
System.out.println("Thursday");
break;
case 5:
System.out.println("Friday");
break;
case 6:
System.out.println("Saturday");
break;
case 7:
System.out.println("Sunday");
break;
}
}
}
hasil program:
9
Thursday
Ketika Java mencapai kata kunci break, itu akan keluar dari blok switch. Ini akan
menghentikan eksekusi kode dan pengujian kasus di dalam blok. Ketika ditemukan
kecocokan, maka pekerjaan selesai, tidak perlu pengujian lebih lanjut.
Kata kunci default menentukan beberapa kode untuk dijalankan jika tidak ada kasus
yang cocok:
int day = 4;
switch (day) {
case 6:
System.out.println("Sekarang hari Sabtu");
break;
case 7:
System.out.println("Sekarang hari Minggu");
break;
default:
System.out.println("Menanti akhir pekan");
}
// Output: "Menanti akhir pekan"
Untuk kasus tertentu, struktur switch dapat menggantikan struktur if...else. Contoh
di atas jika dituliskan dalam bentuk if...else, menjadi seperti berikut.
int day = 4;
if(day == 6)
System.out.println("Sekarang hari Sabtu");
else if(day == 7)
System.out.println("Sekarang hari Minggu");
else
System.out.println("Menanti akhir pekan");
10
Latihan
1. Misalkan x = 2 dan y = 3. Tunjukkan output, jika ada, dari kode berikut.
Berapakah output jika x = 3 dan y = 2? Berapakah output jika x = 3 dan y = 3?
if (x > 2)
if (y > 2) {
int z = x + y;
System.out.println("z is " + z);
}
else
System.out.println("x is " + x);
if (count % 10 == 0)
newLine = true;
else
newLine = false;
if (a == 1)
x += 5;
else if (a == 2)
x += 10;
else if (a == 3)
x += 16;
else if (a == 4)
x += 34;