java計算運算式值-華爲機考(20200320)

前言

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));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章