题解 | #简单表达式计算#

简单表达式计算

https://www.nowcoder.com/practice/6221faa383fc49f1b10dffcb62c866bf?tpId=149&rp=1&ru=%2Fta%2Fexam-bilibili&qru=%2Fta%2Fexam-bilibili&difficulty=&judgeStatus=&tags=&title=&sourceUrl=&gioEnter=menu&dayCountBigMember=%E8%BF%9E%E7%BB%AD%E5%8C%85%E6%9C%88

思路

把字符串用 + 和 - 号分成 多个字符串

分开的字符串中,只有*号。

使用 split 将字符串拆分

然后计算,返回

题目数据没考虑受字符为运算符。

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static int cal(String s) {
        String[] str = s.split("\\*");
        int ans = 1;
        for (int i = 0; i < str.length; i++) {
            ans *= Integer.parseInt(str[i]);
        }
        return ans;
    }
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (true) {
            String str = in.next();
            String str1 = str;
            StringBuilder sb = new StringBuilder(str);
            sb.append("+");
            str = sb.toString();
            if (str.equals("END+"))
                break;
            int l = 0;
            int r = 1;
            int ans = 0;
            //  if(str.charAt(0) == '-' || str.charAt())
            int flag = 1;
            while (r < str.length()) {
                if (str.charAt(r) == '+' || str.charAt(r) == '-' ) {
                    if (flag == 1)
                        ans += cal(str.substring(l, r));
                    else {
                        ans -= cal(str.substring(l, r));
                    }
                    l = r + 1;
                    if (str.charAt(r) == '+') {
                        flag = 1;
                    }
                    if (str.charAt(r) == '-') {
                        flag = 0;
                    }
                    r++;
                }
                r++;
            }
            System.out.println(ans);
        }
    }
}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务