📄 caculaterengine.java
字号:
package bluewater;
public class CaculaterEngine {
CaculaterEngine() {
}
public static int signNumber(char z) {
int t = 0;
if (z == '+')
t = 1;
if (z == '-')
t = 1;
if (z == '*')
t = 2;
if (z == '/')
t = 2;
if (z == '^')
t = 3;
if (z == '(')
t = 0;
if (z == ')')
t = 0;
return t;
}
public static double compute(double x, double y, char z) {
int t = 0;
if (z == '+')
t = 1;
if (z == '-')
t = 2;
if (z == '*')
t = 3;
if (z == '/')
t = 4;
if (z == '^')
t = 5;
switch (t) {
case 1:
return x + y;
case 2:
return x - y;
case 3:
return x * y;
case 4:
return x / y;
case 5:
double k = x;
for (int i = 1; i < (int) y; i++)
k *= x;
return k;
}
return 0;
}
public int deepNumber(char x) {
if (x == '+' || x == '-')
return 1;
if (x == '*' || x == '/')
return 2;
if (x == '^')
return 3;
return 0;
}
public double makeAnswer(String z) {
Strack a = new Strack(z);
for (a.now = 0; a.now < z.length(); a.now++) {
// push number
if (a.nextIsNumber())
a.pushNumber(a.giveMeNumber());
else {
// push sign
a.pushSign(a.point.charAt(a.now));
if (a.signStrack[a.sign] == ')') {
a.upSign();
while (a.signStrack[a.sign] != '(') {
a.numberStrack[a.number - 1] = compute(
a.numberStrack[a.number - 1],
a.numberStrack[a.number], a.signStrack[a.sign]);
a.upNumber();
a.upSign();
}
a.upSign();
}
if (a.sign==0) continue;
char c1 = a.signStrack[a.sign];
char c2 = a.signStrack[a.sign - 1];
if ((signNumber(c1) <= signNumber(c2))
&& (a.point.charAt(a.now) != '(')) {
a.numberStrack[a.number - 1] = compute(
a.numberStrack[a.number - 1],
a.numberStrack[a.number], c2);
a.signStrack[a.sign - 1] = c1;
a.upNumber();
a.upSign();
}
}
}
int t = a.number;
for (int i = 1; i < t; i++) {
char c1 = a.signStrack[a.sign];
a.numberStrack[a.number - 1] = compute(
a.numberStrack[a.number - 1], a.numberStrack[a.number], c1);
a.upNumber();
a.upSign();
}
return a.numberStrack[1];
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -