java计算运算式值-华为机考(20200320)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/babybabyup/article/details/88706942

前言

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

猜你喜欢

转载自blog.csdn.net/babybabyup/article/details/88706942