题解 | #简单表达式计算#
简单表达式计算
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); } } }