4
Percabangan
Statemen
Percabangan
Java
menyediakan statemen percabangan if,
if-else, dan switch, yang
bisa dipakai untuk membuat keputusan.
Sintaks
statemen if adalah
if (kondisi) statemen;
dimana
kondisi adalah suatu ekspresi boolean. Ekspresi boolean merupakan suatu
ekspresi yang menghasilkan nilai bertipe boolean.
Statemen
if-else memiliki format
if (kondisi)
statemen1 (atau runtun
statemen atau blok kode);
else
statemen2 (atau runtun
statemen atau blok kode);
Format
umum statemen switch adalah:
switch (ekspresi) {
case nilai1:
// runtun statemen
break;
case nilai2:
// runtun statemen
break;
...
case nilaiN:
// runtun statemen
break;
default:
// runtun statemen default
}
Soal dan
Penyelesaian
1.
Tulislah sebuah
program untuk membangkitkan angka-angka secara acak. Program kemudian
melaporkan bila integer yang dihasilkan adalah angka negetif.
Penyelesaian
import java.util.Random;
public class
BangkitAcak {
public static void main(String[] args) {
Random acak = new Random();
int n = acak.nextInt();
System.out.println("n =
" + n);
if (n < 0)
System.out.println("****n
< 0");
System.out.println ("Selamat Jalan") ;
}
}
Keluaran Program
n = -294149811
****n < 0
Selamat Jalan
2.
Tulislah sebuah
program untuk menerapkan statemen if-else.
Penyelesaian
import java.util.Scanner;
public class
GunakanIfElse {
public static final double BIAYA_ADMIN = 8000;
public static final double SUKU_BUNGA = 0.02;
public static void main(String[] args) {
double saldo;
System.out.print("Masukkan saldo Anda: Rp. ");
Scanner keyboard = new Scanner(System.in);
saldo =
keyboard.nextDouble();
System.out.println("Saldo awal Rp. " + saldo);
if (saldo >= 0)
saldo = saldo +
(SUKU_BUNGA * saldo);
else
saldo = saldo -
BIAYA_ADMIN;
System.out.print("Setelah berjalan satu bulan ");
System.out.println("dengan pertimbangan bunga dan biaya admin,");
System.out.println("saldo baru Anda adalah Rp. " +
saldo);
}
}
Keluaran Program
Masukkan saldo Anda: Rp. -50000
Saldo awal Rp. -50000.0
Setelah berjalan satu bulan dengan pertimbangan bunga dan biaya
admin,
saldo baru Anda adalah Rp. -58000.0
Masukkan saldo Anda: Rp. 50000
Saldo awal Rp. 50000.0
Setelah berjalan satu bulan dengan pertimbangan bunga dan biaya
admin,
saldo baru Anda adalah Rp. 51000.0
3.
Tulislah sebuah
program yang menggunakan objek dari kelas Random
untuk membangkitkan dua integer acak, m
dan n. Program kemudian menentukan
integer terkecil dari kedua integer yang dibangkitkan.
Penyelesaian
import java.util.Random;
public class
BangkitAcak2 {
public static void main(String[] args){
Random random = new Random();
int m = random.nextInt();
System.out.println("m= " + m);
int n = random.nextInt();
System.out.println("n= " + n);
if (m < n)
System.out.println("Nilai
minimum adalah " + m);
else
System.out.println("Nilai
minimum adalah " + n);
}
}
Keluaran Program
m= 283235071
n= -1279684961
Nilai minimum adalah -1279684961
4.
Tulislah sebuah
program yang menggunakan if-else-if bertangga atau if-else bersarang untuk menentukan musim
dalam setahun.
Penyelesaian
//mendemonstrasikan if-else-if bertangga
public class
DemoIfElse {
public static void main(String args[]) {
int bulan = 4; // April
String musim;
if(bulan == 12 || bulan == 1 || bulan == 2)
musim = "Musim Dingin";
else if(bulan == 3 ||
bulan == 4 || bulan == 5)
musim = "Musim Semi";
else if(bulan == 6 ||
bulan == 7 || bulan == 8)
musim = "Musim Panas";
else if(bulan == 9 ||
bulan == 10 || bulan == 11)
musim = "Musim Gugur";
else
musim = "Bulan tidak valid";
System.out.println("April adalah musim " + musim +
".");
}
}
Keluaran Program
April adalah musim
Musim Semi.
5.
Tulislah sebuah
program menggunakan if-else bersarang untuk menentukan nilai
huruf dari ujian mahasiswa.
Penyelesaian
import java.util.Scanner;
public class
DemiIfElseBersarang {
public static void main(String[] args) {
int skor;
char nilai;
System.out.println("Masukkan skor Anda: ");
Scanner papanKetik = new Scanner(System.in);
skor = papanKetik.nextInt();
if (skor >= 90)
nilai = 'A';
else if (skor >= 80)
nilai = 'B';
else if (skor >= 70)
nilai = 'C';
else if (skor >= 60)
nilai = 'D';
else
nilai = 'F';
System.out.println("Skor = " + skor);
System.out.println("Nilai = " + nilai);
}
}
Keluaran Program
Masukkan skor Anda:
95
Skor = 95
Nilai = A
6.
Tulislah sebuah
program menggunakan if-else bersarang untuk menentukan urutan
dari tiga angka.
Penyelesaian
import java.util.Random;
public class
UrutTigaAngka {
public static void main(String[] args) {
Random acak = new Random();
float a = acak.nextFloat();
System.out.println("a= " + a);
float b = acak.nextFloat();
System.out.println("b= " + b);
float c = acak.nextFloat();
System.out.println("c = " + c);
if (a < b)
if (b < c) System.out.println("a < b < c");
else
if (a < c) System.out.println("a < c < b");
else System.out.println("c<
a < b");
else
if (a < c) System.out.println("b< a < c");
else
if (b < c) System.out.println("b < c < a");
else System.out.println("c<
b < a");
}
}
Keluaran Program
a= 0.9178046
b= 0.6348381
c = 0.99280906
b< a < c
7.
Permasalahan
pada soal no.6 menjadi rumit karena menggunakan statemen if-else bersarang yang
terlalu berlebihan. Kode tersebut dapat digantikan dengan menggunakan beberapa
statemen if secara paralel.
Penyelesaian
import java.util.Random;
public class
IfParalel {
public static void main(String[] args) {
Random acak = new Random();
float a = acak.nextFloat();
System.out.println("a= "+ a);
float b = acak.nextFloat();
System.out.println("b= "+ b);
float c = acak.nextFloat();
System.out .println("c = " + c);
if (a < b && b < c) System.out.println("a < b < c");
if (a < c && c < b) System.out.println("a < c < b");
if (b < a && a < c) System.out.println("b < a < c");
if (b < c && c < a) System.out.println("b < c < a");
if (c < a && a < b) System.out.println("c < a < b");
if (c < b && b < a) System.out.println("c < b < a");
}
}
Keluaran Program
a= 0.34742516
b= 0.26004654
c = 0.16779184
c < b < a
8.
Tulislah sebuah
program yang menggunakan statemen if-else, dimana operator ||
dipakai di dalam kondisi.
Penyelesaian
import java.util.Random;
public class
DemoIfElseOperator {
public static void main(String[] args) {
Random acak = new Random();
float t = acak.nextFloat();
System.out.println("t=
" + t);
if (t < 0.25 || t >= 0.75 )
System.out.println("t <
0.25 atau t >= 0.75");
else
System.out.println("0.25
<= t < 0.75");
}
}
Keluaran Program
t= 0.3158868
0.25 <= t < 0.75
9.
Tulislah sebuah
program yang menggunakan statemen if,
dimana operator || dipakai di dalam kondisi yang merupakan
penggabungan beberapa ekspresi boolean.
Penyelesaian
public class
IfOperatorGabung {
public static void main(String[] args) {
final int PJG = 255;
byte penyangga[] = new
byte[PJG];
System.out .print ("Masukkan nama depan Anda: " ) ;
try { System.in.read(penyangga,0, PJG); }
catch (Exception e) { }
String nama = new
String(penyangga);
System.out.println("Hai, " + nama.trim());
char c = nama.charAt(0);
System.out.println("Huruf pertama pada nama Anda adalah
" + c);
if ( c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
System.out .println ("Yang merupakan huruf vokal.") ;
}
}
Keluaran Program
Masukkan nama depan Anda: Osuka
Hai, Osuka
Huruf pertama pada nama Anda adalah O
Yang merupakan huruf vokal.
10. Tulislah sebuah program yang mengilustrasikan
penggunaan sederhana atas statemen switch.
Penyelesaian
//Sebuah contoh statemen switch sederhana
public class
SwitchSederhana {
public static void main(String args[]) {
for(int i=0; i<6;
i++)
switch(i) {
case 0:
System.out.println("i adalah
nol.");
break;
case 1:
System.out.println("i adalah
satu.");
break;
case
2:
System.out.println("i adalah
dua.");
break;
case 3:
System.out.println("i adalah
tiga.");
break;
default:
System.out.println("i lebih besar dari 3.");
}
}
}
Keluaran Program
i adalah nol.
i adalah satu.
i adalah dua.
i adalah tiga.
i lebih besar dari 3.
i lebih besar dari 3.
11. Tulislah sebuah program yang menggunakan statemen switch, dimana pengguna memasukkan
jumlah anak yang dipunyai, kemudian program akan meresponnya dengan
alternatif-alternatif respon yang tergantung dari jumlah anak yang dimiliki
pengguna.
Penyelesaian
import java.util.Scanner;
public class
BanyakAnak {
public static void main(String[] args) {
int jumBayi;
System.out.print("Masukkan jumlah bayi: ");
Scanner papanketik = new Scanner(System.in);
jumBayi =
papanketik.nextInt();
switch (jumBayi) {
case 1:
System.out.println("Selamat!.");
break;
case 2:
System.out.println("Wow.
Kembar!.");
break;
case 3:
System.out.println("Wow.
Kembar Tiga!.");
break;
case 4:
case 5:
System.out.print("Hebat!
");
System.out.println(jumBayi + " bayi.");
break;
default:
System.out.println("Saya
tidak percaya!.");
break;
}
}
}
Keluaran Program
Masukkan jumlah bayi: 3
Wow. Kembar Tiga!.
12. Statemen break
bersifat opsional. Jika Anda mengabaikan statemen break, maka eksekusi program akan dilanjutkan ke case berikutnya. Tulislah suatu program
untuk mengilustrasikan situasi seperti ini.
Penyelesaian
//Statemen break bersifat opsional
public class
BreakOpsional {
public static void main(String args[]) {
for(int i=0; i<12;
i++)
switch(i) {
case 0:
case 1:
case 2:
case 3:
case 4:
System.out.println("i kurang
dari 5");
break;
case 5:
case 6:
case 7:
case 8:
case 9:
System.out.println("i kurang
dari 10");
break;
default:
System.out.println("i
bernilai 10 atau lebih");
}
}
}
Keluaran Program
i kurang dari 5
i kurang dari 5
i kurang dari 5
i kurang dari 5
i kurang dari 5
i kurang dari 10
i kurang dari 10
i kurang dari 10
i kurang dari 10
i kurang dari 10
i bernilai 10 atau lebih
i bernilai 10 atau lebih
13. Tulislah suatu program untuk memperbaiki kode pada
soal no.4 dengan menggunakan statemen switch.
Penyelesaian
public class
MusimDenganSwitch {
public static void main(String args[]) {
int bulan = 4;
String musim;
switch (bulan) {
case 12:
case 1:
case 2:
musim = "Musim Dingin";
break;
case 3:
case 4:
case 5:
musim = "Musim Semi";
break;
case 6:
case 7:
case 8:
musim = "Musim Panas";
break;
case 9:
case 10:
case 11:
musim = "Musim Gugur";
break;
default:
musim = "Bulan tidak valid";
}
System.out.println("April adalah " + musim + ".");
}
}
Keluaran Program
April adalah Musim Semi.
14. Tulislah suatu program untuk menentukan nilai huruf,
menggunakan statemen switch.
Penyelesaian
import java.util.Random;
public class
NilaiHurufSwitch {
public static void main(String[] args) {
Random acak = new Random();
float x = acak.nextFloat();
System.out.println("x= " + x);
int skor = Math.round(50*x + 50);
System.out.println("Skor Anda adalah " + skor);
switch (skor/10) {
case 10:
System.out.print("Anda mendapat
nilai A+" ) ;
break;
case 9:
System.out.print("Anda mendapat nilai A" ) ;
break;
case 8:
System.out.print("Anda mendapat nilai B" ) ;
break;
case
7:
System.out.print("Anda
mendapat nilai C");
break;
case 6:
System.out.print("Anda mendapat nilai D");
break;
default:
System.out.print("Anda mendapat nilai F");
}
if (skor >= 60 && skor < 100)
if (skor %10 > 7 ) System.out.print("+");
else if (skor %10 <
2) System.out.print("-");
}
}
Keluaran Program
x= 0.3172546
Skor Anda adalah 66
Anda mendapat nilai D
mantap
ReplyDeletemantap
ReplyDelete