Input
Operand1
operator1 operand2 operator2 … ….operandN
operatorN
Output
Hasil
operasi
|
Contoh
:
5
+ 3 – 2 + 2
Output
8
|
Soal Bonus
Penilaian (Poin 110)
1.
Penamaan variable ,operator, komentar untuk penjelasan program. (
Poin 10)
2.
Program dibuat lebih dari satu file class dan satu method (satu method harus
berjenis fungsi – memiliki nilai kembalian) ( Poin 25)
3.
Penggunaan Class Library untuk Input dari Keyboard( Poin 30)
4.
Pengunaan Struktur Kontrol (Conditional dan Looping). ( Poin 20)
5.
Program sesuai
dengan Algortima yang diberikan ( Poin 25)
1. Class “thrbonus.java”
package THR_Bonus;
import java.util.Scanner;
/**
*
* @author Rizky
*/
public class thrbonus {
public static void
main(String[] args) {
Scanner read = new
Scanner(System.in);//membuat objek scanner dengan nama objek read
System.out.println("Masukan 3 bilangan dan 2 operator (Gunakan
spasi untuk pemisah bilangan dana operator):");
double bilangan1 =
read.nextDouble();
String operator1 =
read.next();
double bilangan2 =
read.nextDouble();
String operator2 =
read.next();
double bilangan3 =
read.nextDouble();
/*deklasrasi
variabel bilangan1,bilangan2,bilangan3, operator1 dan
* operator2.
Variabel bilangan1 dan bilanan2 bertipe data double agar
* apabila ada hasil
koma akan muncul hasilnya. operator aritmatika
*/
boolean test =
testTingkat(operator1,operator2); //instansiasi fungsi
//deklarasi variabel
hitungAwal dan hitungAkhir
double hitungAwal =
0;
double hitungAkhir =
0;
// setara 2 * 3 + 5
// tidak setara 2 +
5 * 3
if(test){
hitungAwal =
hitung(new double[] {bilangan1,bilangan2}, operator1);
hitungAkhir =
hitung(new double[] {hitungAwal, bilangan3}, operator2);
//pemanggilan
proses hitung apabila setara/true
}else{
hitungAwal =
hitung(new double []{bilangan2,bilangan3}, operator2);
hitungAkhir =
hitung(new double [] {bilangan1, hitungAwal}, operator1);
//pemanggilan proses
hitung apabila tidak setara/false
}
System.out.println(hitungAkhir); //mencetak hasil akhir yang ada di
dalam variabel hitungAkhir
}
//proses penghitungan
private static double
hitung(double[] bil, String op) {
double result =
0;//deklarasi variabel result
if
(op.equals("+")) {
result = bil[0]
+ bil[1];//penyeleksian untuk operator +
} else if
(op.equals("-")) {
result = bil[0]
- bil[1];//penyeleksian untuk operator -
} else if
(op.equals("*")) {
result = bil[0]
* bil[1];//penyeleksian untuk operator *
} else if
(op.equals("/")) {
result = bil[0]
/ bil[1];//penyeleksian untuk operator /
}
return
result;//menggembalikan nilai variabel
result
}
// false tidak setingkat
// true setingkat
// menyusun tingkatkan
operator
private static boolean
testTingkat(String op1, String op2){
boolean expression =
false;
/*deklarasi variabel
expression, untuk menandakan apakah operator1 lebih tinggi tingkatannya
daripada operator2 atau sebaliknya
* operator * dan
operator / tingkatannya lebih tinggi daripada
* operator + dan
operator -
* operator * dan
operator / = setara
* operator + dan
operator - = setara
* apabila operator
1 dan operator 2 sama maka setara
*/
if(op1.equals("+") && op2.equals("*")){
expression =
false;// + lebih rendah dari *
}else
if(op1.equals("+") && op2.equals("/")){
expression =
false;// + lebih rendah dari /
}else if(op1.equals("+") &&
op2.equals("+")){
expression =
true;// setara
}else if
(op1.equals("+") && op2.equals("-")) {
expression =
true;// setara
}else
if(op1.equals("-") && op2.equals("*")){
expression =
false;// - lebih rendah dari *
}else
if(op1.equals("-") && op2.equals("/")){
expression =
false;// - lebih rendah dari /
}else
if(op1.equals("-") && op2.equals("+")){
expression =
true;// setara
}else if(op1.equals("-")
&& op2.equals("-")){
expression =
true;// setara
}else
if(op1.equals("*") && op2.equals("*")){
expression =
true;// setara
}else
if(op1.equals("*") && op2.equals("/")){
expression =
true;// setara
}else
if(op1.equals("*") && op2.equals("+")){
expression =
true;// * lebih tinggi dari +
}else
if(op1.equals("*") && op2.equals("-")){
expression =
true;// * lebih tinggi dari -
}else
if(op1.equals("/") && op2.equals("*")){
expression =
true;// setara
}else
if(op1.equals("/") && op2.equals("/")){
expression =
true;// setara
}else if
(op1.equals("/") && op2.equals("+")) {
expression = true;// / lebih tinggi dari +
}else
if(op1.equals("/") && op2.equals("-")){
expression =
true;// / lebih rendah dari -
}else{
System.out.println("Error!");
}
return
expression;//meminta nilai kembalian variabel expression
}
}
Ini Print Screen hasil ouput’nya^^v
Ini link buat download :)