永发信息网

java编写的calculator类

答案:2  悬赏:40  手机版
解决时间 2021-02-19 19:53
java编写的calculator类
最佳答案
import java.util.ArrayList;
import java.util.List;

public class Oper {
private static int num = 0;
private static double number = 0;
private static boolean flag = true;
private static List l = new ArrayList();

public String operator(String str) {
num = 0;
number = 0;
l = new ArrayList();
String[] ss = str.split("=");
str = ss[0];

String nstr = "";
String s = "";
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == ')') {
s = "l";
} else if (str.charAt(i) == '(') {
s = "x";
} else {
s = str.charAt(i) + "";
}
nstr += s;
}
for (int j = 0; j < str.length(); j++) {
if (nstr.charAt(j) == 'l') {
num++;
}
}

return this.Stringsplit(nstr);

}

private String Stringsplit(String str) {
// System.out.println(num);
String re = "";
try {
String[] first = str.split("l");
String[] second = first[0].split("x");
try {

second[second.length - 1] = this.bracket(second[second.length - 1]);
} catch (ArrayIndexOutOfBoundsException e) {

}
for (int i = 0; i < second.length; i++) {
if (i == second.length - 1) {
str += second[i];
} else if(i == second.length - 2){
str += second[i] ;
}else {

str += "x"+second[i] ;
}
}
for (int i = 1; i < first.length; i++) {
str += first[i] + "l";
}System.out.println(str);

if (--num > 0) {
this.Stringsplit(str);
}
l.add(str);
re = this.result(l.get(0));
} catch (ArrayIndexOutOfBoundsException e) {
re = this.bracket(str);

}
return re;

}

private String bracket(String str) {
List list = new ArrayList();
List list1 = new ArrayList();
String s = "";
for (int i = 0; i < str.length(); i++) {

if (str.charAt(i) == '.') {
s += ".";
} else {
try {
s += Integer.parseInt(str.charAt(i) + "");
} catch (NumberFormatException e) {

list.add(s);
list1.add(str.charAt(i) + "");
s = "";

}
}

}
list.add(s);
return this.ALG(list, list1);

}

private String ALG(List arg0, List arg1) {
String str = "";
int i = 0;
for (; i < arg1.size(); i++) {
double sum = 0;
if (arg1.get(i).equals("*")) {
sum = Double.parseDouble(arg0.get(i))
* Double.parseDouble(arg0.get(i + 1));

arg0.remove(i + 1);
arg0.add(i + 1, sum + "");
sum = 0;

} else if (arg1.get(i).equals("/")) {
sum = Double.parseDouble(arg0.get(i))
/ Double.parseDouble(arg0.get(i + 1));
arg0.remove(i + 1);
arg0.add(i + 1, sum + "");
sum = 0;

} else {

str += arg0.get(i) + arg1.get(i);

}

}
str += arg0.get(i);

return str;

}

private String result(String str) {
List list = new ArrayList();
List list1 = new ArrayList();
String s = "";
for (int i = 0; i < str.length(); i++) {
try {
if (str.charAt(i) == '.') {
s += str.charAt(i);
} else {
s += Integer.parseInt(str.charAt(i) + "");
}
} catch (NumberFormatException e) {

list.add(s);
list1.add(str.charAt(i) + "");
s = "";
}
}
list.add(s);
for (int i = 0; i < list.size(); i++) {
}
double sum = 0;
for (int i = 0; i < list1.size(); i++) {
if (list1.get(i).equals("+")) {
sum = Double.parseDouble(list.get(i))
+ Double.parseDouble(list.get(i + 1));
list.remove(i + 1);
list.add(i + 1, sum + "");
sum = 0;

} else if (list1.get(i).equals("-")) {
sum = Double.parseDouble(list.get(i))
- Double.parseDouble(list.get(i + 1));
list.remove(i + 1);
list.add(i + 1, sum + "");
sum = 0;

}
}
return list.get(list.size() - 1);
}

public String stingsqrt(String str) {
String[] ss = str.split("sqrt");

double sqrtx = Double.parseDouble(ss[0]);

return "" + Math.sqrt(sqrtx);
}

public static void main(String[] args) {
Oper o = new Oper();
System.out.println(o.operator("(1+(1+1))"));
// System.out.println("---:" + num);
}
}
全部回答
路过
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
看完《孙悟空三打白骨精》的感想
玉山县农业便民服务中心地址有知道的么?有点
梨耙沟地址有知道的么?有点事想过去
工业设计考研能同时报考几个学校?
旁观者Beholder手游闪退怎么办
炖汤的时候药材什么时候放?
攸县的煤矿煤质怎么样?希望内部或知情者回答
我女朋友是肝豆状核变性患者,医生说有一方没
【知照】下列()属于知照类公文。
中国农业银行(阳江阳东支行)这个地址在什么地
要完整的弹电吉他卡农 一般要几年的琴龄?
八月一号深圳到邯郸的机票是多少钱
李梅买了一个圆柱形花瓶,底面半径8cm,高20cm,
河北第一秘李真的老婆
与时俱进强素质,创新思维谋发展是什么意思
推荐资讯
南通云现电子商务是传销吗?
南下南下(完结版)在哪看?
请问深圳地铁九号线在哪里转二号线
买房子的点是什么意思
苏州市老大房食品厂在哪里啊,我有事要去这个
洗衣机是如何排水的?非全自动的
“十一”7天长假中,王老师想带家人参加旅行
dota imba进去后怎样选英雄
代理快递怎么赚钱
我在彭州建国买的哈佛车在那保养
麻烦写出具体的思路,函数y=(|sinx|/sinx)+(co
家得利整体家装地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?