This repository has been archived by the owner on May 25, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathRelational.java
125 lines (107 loc) · 3.21 KB
/
Relational.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import java.util.*;
/**
*
* @author 13513022 / Husni Munaya
*/
public class Relational extends Expression {
/**
* A constructor.
* Membuat objek Arithmetic
* @param ekspresi
*/
public Relational(String ekspresi) {
super(ekspresi);
}
/**
* Mengkalkulasi ekspresi
* @return hasil perhitungan
*/
public boolean calculate() {
float operan1, operan2;
String oprt;
Scanner sc = new Scanner(ekspresi);
operan1 = Float.parseFloat(sc.next());
operan2 = Float.parseFloat(sc.next());
oprt = sc.next();
return binaryOpt(oprt, operan1, operan2);
}
/**
* Method yang mengembalikan hasil dari operasi binary
* Menghitung dua buah integer
* @param oprt sebuah string
* @param a sebuah float
* @param b sebuah float
* @return hasil perhitungan operasi binary
*/
public boolean binaryOpt(String oprt, float a, float b) {
switch(oprt) {
case "<":
return a < b;
case ">":
return a > b;
case "<=":
return a <= b;
case ">=":
return a >= b;
case "=":
return a == b;
case "<>":
return a != b;
default:
return false;
}
}
/**
* Fungsi yang mengecek apakah string berupa operan
* @param opr yang berupa operan
* @return boolean yang bernilai true jika string == operan
*/
@Override
public boolean isOperan(String opr) {
return (!isOperator(opr)) && (!opr.equals("(")) && (!opr.equals(")"));
}
/**
* Fungsi yang mengecek apakah string berupa operator
* @param oprt yang berupa operator
* @return boolean yang bernilai true jika string == operator
*/
@Override
public boolean isOperator(String oprt) {
return (oprt.equals(">") ||
oprt.equals("<") ||
oprt.equals(">=") ||
oprt.equals("<=") ||
oprt.equals("=") ||
oprt.equals("<>")
);
}
/**
* Fungsi yang mengecek apakah string berupa operator unary
* @param oprt yang berupa operator
* @return boolean yang bernilai true jika string == operator unary
*/
@Override
public boolean isUnaryOpt(String oprt) {
return false;
}
/**
* Fungsi yang mengecek apakah operator o1 mempunyai prioritas lebih dibanding o2
* @param o1 operator yang berupa string
* @param o2 operator yang berupa string
* @return boolean yang bernilai true jika o1 memiliki prioritas lebih dibanding o2
*/
@Override
public boolean higherPrecedence(String o1, String o2) {
return (getOperatorWeight(o1) > getOperatorWeight(o2));
}
/**
* Fungsi yang menghasilkan berat operator
* @param op operator yang berupa string
* @return integer yang merupakan bobot dari operator
*/
@Override
public int getOperatorWeight(String op) {
// tidak ada prioritas dalam operator relasional, sehingga mengembalikan 0
return 0;
}
}