前言
2020年3月20日19点,杭州已经进入黑夜,窗外雷鸣电闪,阳台上已经是积水成渊,我默默打开电脑,开始华为机考。
问题描述
输入一个计算式,计算结果。如:1+2-3-2+3+4+5
计算式要求:
- 人为保证正确
- 数字只能是[0,99)。
解决思路
主要考输入输出,以及对字符串的各种操作。
我的思路是加数作为一部分计算,减数作为一部分计算,但是怎么分开呢?以1+2-3-2+3+4+5
为例:
使用String.split()把加数分开:
1,2-3-2,3,4,5
然后对含有-减号的式子再次处理,第一个数字肯定是加数的。再次分为
2(加数),3,2
public class HuaWei {
public static void main(String args[]) {
int a = 0;
int b = 0;
String str1;
Scanner in = new Scanner(System.in);
str1 = in.next();
String[] addstr = str1.split("\\+");
for(int i = 0; i<addstr.length;i++) {
if (addstr[i].contains("-")) {
String str = addstr[i];
String[] constr = str.split("-");
for (int j=1;j<constr.length;j++) {
b = b+Integer.parseInt(constr[j]);
}
a = a + Integer.parseInt(String.valueOf(constr[0]));
} else {
a = a + Integer.parseInt(String.valueOf(addstr[i]));
}
}
System.out.println(a-b);
刚刚看到网上还有一种做法:使用javascript中的eval()函数
ScriptEngine scriptEngine = new ScriptEngineManager().getEngineByName("JavaScript");
System.out.println(scriptEngine.eval(str1));