前言
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));