62,614
社区成员
发帖
与我相关
我的任务
分享
//解析算术式,把分别把数字,运算符放入number,和op中
String s ="........." //要计算的表达式
LinkedList<String> number = new LinkedList<String>();
LinkedList<String> op = new LinkedList<String>();
for (String n : s.split("\W")){
number.add(n);
}
System.out.println("计算之前 number:" + number + " 个数 :"
+ number.size());
for (String o : s.split("\w+")){
op.add(o);
}
op.remove(0); // 第1个元素为"",移除
//System.out.println("计算之前 op :" + op + " 个数:" + op.size());
//先计算*,/运算,并把计算过的数和运算符设置为字符串null,对于数的设置把左操作数
//置字符串null,右操作数置为2数运算的结果
for (int i = 0; i < number.size() - 1; i++){
String p = op.get(i);
if (p.equals("*")) ...{
int n = Integer.parseInt(number.get(i))
* Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
} else if (p.equals("/")){
int n = Integer.parseInt(number.get(i))
/ Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
}
}
// System.out.println("乘除运算完毕!");
// 将number,op中置null的删除
for (Iterator<String> it = number.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}
// System.out.println("进行乘除计算后剩余的计算数: number:" + number + "个数:"
// + number.size());
for (Iterator<String> it = op.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}
// System.out.println("进行乘除计算后剩余的操作符: op:" + op + " 个数:" + op.size());
//进行+,-运算
boolean flag = true;
while (flag){
//运算过的置null字符串
for (int i = 0; i < number.size() - 1; i++){
String p = op.get(i);
if (p.equals("+")){
int n = Integer.parseInt(number.get(i))
+ Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
} else if (p.equals("-")){
int n = Integer.parseInt(number.get(i))
- Integer.parseInt(number.get(i + 1));
number.set(i, "null");
number.set(i + 1, n + "");
op.set(i, "null");
} else ...{
continue;
}
}
//将置null的删除
for (Iterator<String> it = number.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}
// System.out.println("进行乘除计算后剩余的计算数: number:" + number + "个数:"
// + number.size());
for (Iterator<String> it = op.iterator(); it.hasNext();){
if (it.next().equals("null")){
it.remove();
}
}
// System.out.println("进行乘除计算后剩余的操作符: op:" + op + " 个数:"
// + op.size());
// System.out.println(number);
//判断如果op中没有元素,将算术式也运算完毕
if (op.size() == 0){
flag = false;
break;
}
}
// System.out.println("进行加减计算后剩余的计算数: number:" + number + " 个数:"
// + number.size());
// System.out.println("进行加减计算后剩余的操作符: op:" + op + " 个数:" + op.size());
// System.out.println(number);
String result = number.get(0);
System.out.println("运算结果:" + result);