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