Pernyataan if Bersarang
Diperkenalkan| English | Makna |
|---|---|
| nested if/ˈnestɪd ɪf/ | if bersarang |
Cabang awal yang luas menyembunyikan nilai tertinggi
- Tangga nilai menguji
s >= 60sebelumelse if (s >= 90). Dengan s=95, kondisi pertama benar, sehingga cabangnya berjalan dan cabang nilai tertinggi tidak pernah diuji. - Untuk batas bawah tumpang tindih ini, uji ambang batas yang lebih tinggi terlebih dahulu. Ini adalah aturan penalaran untuk tangga ini, bukan persyaratan untuk mengurutkan setiap kemungkinan kondisi dari "paling spesifik" ke "paling umum".
Penumpukan membuat keputusan bergantung pada jalur pembungkusnya
- If bersarang menempatkan if di dalam cabang lain. Jika pernyataan bagian dalam berada di cabang true luar, maka hanya akan dicapai ketika kondisi luar tersebut true; jika if berada di dalam else, maka akan dicapai melalui jalur false.
- Gunakan kurung kurawal untuk menunjukkan struktur tersebut. Else tanpa kurung kurawal berpasangan dengan if terdekat yang belum dipasangkan, yang bisa berbeda dari apa yang disugestikan oleh indentasi.
Tangga memilih cabang pencocokan pertamanya
- Tangga
if ... else if ... elsememeriksa kondisi dari atas ke bawah hingga menemukan yang pertama kali true. Dengan else terakhir, satu cabang dipilih saat evaluasi kondisi selesai; tanpa else, mungkin tidak ada yang berjalan. - Metode di bawah ini menerima skor bilangan bulat biasa dan mengembalikan A, B, C, atau F. Untuk 85, ia memeriksa 90, kemudian 80, mengembalikan B, dan tidak pernah mengevaluasi uji cabang sisanya.
public class GradeChoice {
public static String grade(int s) {
if (s >= 90) {
return "A";
} else if (s >= 80) {
return "B";
} else if (s >= 70) {
return "C";
} else {
return "F";
}
}
}
Bedakan kasus tumpang tindih dari kasus yang terpisah
- Dengan batas bawah yang tumpang tindih,
s >= 60mencakup setiap skor yang memenuhis >= 90. Menempatkannya di awal mencegah cabang kedua dipilih, meskipun Java dapat mengompilasi tangga tersebut. - Untuk uji murni yang terpisah seperti
x < 0,x == 0, danx > 0, mengubah urutan mereka sambil mempertahankan hasil yang sama tidak harus mengubah hasil. Kebijakan tumpang tindih mungkin sebaliknya secara sengaja memprioritaskan satu kasus; ikuti persyaratan yang dinyatakan.
Cabang true pertama menang
s = 85 mengambil cabang >= 80 (B); cabang selanjutnya dilewati.
Dalam tangga else-if, blok kondisi mana yang dijalankan?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Java mengambil kondisi true pertama dari atas ke bawah.
Untuk if (s>=90) A; else if (s>=80) B; else C; dengan s = 85, hasilnya adalah...
Difficulty 1/5 · 100 coins + a small bonus on first completion today
85 gagal >=90 tetapi lolos >=80 → B, lalu berhenti.
Jika kondisi luas muncul sebelum kondisi sempit dalam tangga, cabang yang sempit bisa menjadi tidak terjangkau.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Kondisi luas menangkap kasus tersebut terlebih dahulu; letakkan yang paling ketat pertama.
Untuk if internal yang diletakkan di dalam cabang true if eksternal, kondisi internal diperiksa bahkan ketika kondisi eksternal salah.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Pernyataan internal tersebut tidak dicapai pada jalur false. If yang diletakkan di dalam cabang else akan memiliki jalur pengungkung yang berbeda.
Untuk tangga nilai menggunakan s >= 90, s >= 80 dan s >= 70, urutan manakah yang mempertahankan nilai tertinggi yang dimaksud?
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Batas bawah yang lebih tinggi datang pertama karena perbandingan ini saling tumpang tindih. Ini bukan aturan urutan universal untuk semua kondisi Boolean.
Pisahkan if independen dari sebuah tangga
- Dua pernyataan terpisah,
if (s >= 60) ...; if (s >= 90) ...;, keduanya menjalankan isinya untuk s=95. Tangga if-else menghubungkan alternatif-alternatif tersebut dan hanya memilih pencocokan pertamanya. - Jejakkan dengan nilai aktual pada ambang batas dan tepat di bawahnya: 90 menuju A, 89 menuju B, 80 menuju B, 79 menuju C, dan 69 menuju F. Menguji hanya 85 akan melewatkan operator batas yang salah.
“Pertama true menang” menggambarkan tangga yang terhubung, bukan beberapa pernyataan if independen. Sebuah cabang mungkin mustahil dipilih karena perbandingan sebelumnya menangkap semua inputnya tanpa menyebabkan error statement tak terjangkau pada waktu kompilasi.
Dua pernyataan if independen menguji s >= 60 dan s >= 90. Untuk s=95, berapa banyak badan pernyataan yang berjalan?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
Kedua kondisi benar dan pernyataan tersebut saling independen, sehingga kedua blok kode akan dieksekusi.
Jejakkan cabang false dari if luar
- Dalam
if (weekday) { ... } else { if (raining) { ... } }, pengujian hujan bagian dalam dicapai ketika weekday bernilai false. Cabang pembungkus, bukan sekadar kata “bersarang”, menentukan kapan hal itu berjalan. - Identifikasi kurung kurawal, alternatif yang terhubung, kondisi tumpang tindih, dan input aktual sebelum memprediksi jalur. Pertahankan kebijakan kode dan uji batas agar konsisten; indentasi saja tidak menentukan pengelompokan Java.
If bersarang hanya berjalan ketika kontrol mencapai cabang pembungkusnya. Tangga yang terhubung memilih kondisi true pertama; pernyataan if independen dapat menjalankan beberapa isi. Ambang batas lebih tinggi muncul pertama dalam tangga nilai ini karena kondisinya saling tumpang tindih.
With if (s >= 60) result = 1; else if (s >= 90) result = 2; else result = 3;, what is result for s = 95?
Difficulty 2/5 · 140 coins + a small bonus on first completion today
95 satisfies the first comparison, so result becomes 1 and the else-if branch is skipped.
if di dalam cabang else luar dapat dicapai ketika kondisi luar bernilai false.
Difficulty 1/5 · 100 coins + a small bonus on first completion today
Ya: jalur false luar masuk ke else, di mana uji internal mungkin akan berjalan.