写一个支持四则运算的计算器,可以支持诸如“1 + 2 + 3”的表达式
第一版代码:说明只能顺序执行计算,没有乘除括号等优先计算
import java.util.Scanner;
/**
* <p>ClassName: Calculator</p>
* <p>Description: 计算器</p>
* <p>Author: spring.zhang</p >
* <p>Date: 2020年4月23日</p>
*/
public class Calculator {
public static void main(String[] args) {
// 输入运算表达式
Scanner in = new Scanner(System.in);
String s = in.next();
boolean flag = false; // 标识第一个数
double sum = 0; // 运算结果
char ch = '+'; // 用于记录表达式最后一个运算符
StringBuilder str = new StringBuilder(); // 记录运算的数
for (int i=0; i<s.length(); i++) {
if (s.charAt(i) == '+' || s.charAt(i) == '-' || s.charAt(i) == '*' || s.charAt(i) == '/') {
if(!flag){
flag = true;
sum+=Double.parseDouble(str.toString());
str = new StringBuilder();
}else{
if (ch == '+') {
sum += Double.parseDouble(str.toString());
} else if(ch == '-'){
sum -= Double.parseDouble(str.toString());
} else if(ch == '*'){
sum *= Double.parseDouble(str.toString());
} else if(ch == '/'){
sum/=Double.parseDouble(str.toString());
}
str = new StringBuilder();
}
ch = s.charAt(i);
} else {
str.append(s.charAt(i));
}
}
// 计算最后一个数
if (ch == '+') {
sum += Double.parseDouble(str.toString());
} else if(ch == '-'){
sum -= Double.parseDouble(str.toString());
} else if(ch == '*'){
sum *= Double.parseDouble(str.toString());
} else if(ch == '/'){
sum/=Double.parseDouble(str.toString());
}
System.out.println(sum);
}
}
输出