Sesuai dengan
postingan saya sebelumnya, ada hal yang harus kita perhatikan dalam membuat
nested IF ataupun menginisialisasi suatu variable, yaitu Block atau sering
disebut dengan Scope. Untuk dapat memahami hal ini dengan gampang, saya akan
mengilustrasikan dengan memisalkan IF adalah orang.
Jadi ada
beberapa orang yang sedang berdiri di gedung yang bertingkat tingkat dan sedang
melihat ke arah bawahnya, orang pertama berada di gedung rendah, orang kedua
berada di gedung yang lebih tinggi dari orang pertama, orang ketiga berada di
gedung yang lebih tinggi dari orang yang kedua, begitu seterusnya. Sehingga
orang pertama tidak bisa melihat /mengenal orang kedua dan ketiga, orang kedua
hanya melihat/mengenal orang pertama karena ada di bawahnya tapi orang kedua
tidak dapat melihat/mengenal orang ketiga, orang ketiga melihat/mengenal orang
pertama dan kedua karena ada di bawahnya, sedangkan orang ketiga tidak dapat
melihat/mengenal orang yang di atasnya, begitu seterusnya.
Sama seperti ilustrasi di atas,
berikut versi java nya.
public class LatihanIf{
public static void main(String[]args){
Scanner input = new Scanner (System.in);
int nilai;
System.out.println(“Masukkan nilai Anda: ”);
nilai = input.nextInt();int kejujuran;
System.out.println(“Apakah Anda mengerjakannya dengan cara mencontek? ”);
System.out.println(“Tekan 1 jika Ya ; dan 2 jika Tidak ”);
kejujuran = input.nextInt();
if (nilai ==100){
int kedisiplinan = 75;
if(kejujuran==1){
System.out.println(“Maaf, Anda Gagal”);
}else if(kejujuran==2){
System.out.println(“Nilai Anda sempurna, Grade A);
System.out.println(“Kedisiplinan Anda = ”+kedisiplinan);}} else if (nilai <100 && nilai > 80){
System.out.println(“Nilai Anda Baik, Grade B”);}else if(nilai <80 && nilai > 60){
System.out.println(“Nilai Anda Cukup Baik, Grade C”);}else {
System.out.println(“Anda perlu mengulang Pelajaran”);}
}
}
Berdasarkan codingan di atas, nilai kedisiplinan akan mucul
75, tapi hal ini berbeda jika penempatan coding nya berada di luar Scope.
public class LatihanIf{
public static void main(String[]args){
Scanner input = new Scanner (System.in);
int kedisiplinan = 0;int nilai;
System.out.println(“Masukkan nilai Anda: ”);
nilai = input.nextInt();int kejujuran;
System.out.println(“Apakah Anda mengerjakannya dengan cara mencontek? ”);
System.out.println(“Tekan 1 jika Ya ; dan 2 jika Tidak ”);
kejujuran = input.nextInt();
if (nilai ==100){
kedisiplinan = 75;
if(kejujuran==1){
int kedisiplinan = 45;
System.out.println(“Maaf, Anda Gagal”);
System.out.println(“Kedisiplinan Anda#1 = ”+kedisiplinan);
}else if(kejujuran==2){
int kedisiplinan = 80;
System.out.println(“Nilai Anda sempurna, Grade A);
System.out.println(“Kedisiplinan Anda#2 = ”+kedisiplinan);
}
System.out.println(“Kedisiplinan Anda#3 = ”+kedisiplinan);} else if (nilai <100 && nilai > 80){
System.out.println(“Nilai Anda Baik, Grade B”);}else if(nilai <80 && nilai > 60){
System.out.println(“Nilai Anda Cukup Baik, Grade C”);}else {
System.out.println(“Anda perlu mengulang Pelajaran”);} System.out.println(“Kedisiplinan Anda#4 = ”+kedisiplinan);
}
}
Coba kita
analisis sedikit, ketika ‘Kedisiplinan Anda#1’ muncul, maka nilai kedisiplinan
adalah 45, ketika ‘Kedisiplinan Anda#2’ muncul, maka nilai kedisiplinan adalah
80, ketika ‘Kedisiplinan Anda#3’ muncul, maka nilai kedisiplinan adalah 75,
ketika ‘Kedisiplinan Anda#4’ muncul, maka nilai kedisiplinan adalah 0.
Hal ini
disebabkan oleh adanya Scope / Block yang kita gunakan. Nilai yang berada di
dalam tanda kurung kurawal, akan dapat membaca nilai yang berada di luar kurung
kurawal, dan juga bisa mengganti nilai yang di luar kurung kurawal menjadi
nilai baru di dalam kurung kurawal. Tetapi nilai yang berada di luar kurung
kurawal tidak bisa melihat / mengenal nilai yang berada di dalam kurung
kurawal.
Gimana, sudah
mengerti kan? Sekian dulu untuk penjelasan dari Scope dan If, sebenarnya dalam
java tidak hanya mengenal IF Condition untuk membandingkan beberapa kondisi
yang ada, masih ada fungsi lainnya yang bernama Switch Case. Hampir sama
penggunaannya dari IF, hanya ada beberapa kelebihannya.
Baca lanjutannya di Penggunaan Switch Case dalam Java