1、题目
题目描述
常规的表达式求值,我们都会根据计算的优先级来计算,比如*/的优先级高于+-。但是小易所生活的世界的表达式规则很简单,从左往右依次计算即可,而且小易所在的世界没有除法,意味着表达式中没有/,只有(+,-和*)。现在给出一个表达式,需要你帮忙计算出小易所在的世界这个表达式的值是多少?输入描述
输入为一行字符串,即一个表达式。其中运算符只有-,+,*。参与计算的数字只有0~9.
2、基本思想
(1)读取输入表达式,将字符串转化为字符数组;
(2)遍历字符数组,如果data[i]字符为+,-,*,则取前一个data[i-1]和后一个data[i+1]进行运算,这里需要注意char转化为int的ASCALL码变换,相差48;
(3)将运算后的结果赋值给data[i+1],再进行重复运算。
3、解决方案
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int sum = 0;
char dataArray[] = s.toCharArray();
for(int i = 0;i < dataArray.length - 1;i ++){
switch(dataArray[i]) {
case '+':
sum = dataArray[i-1] + dataArray[i+1]-96;
dataArray[i+1] = (char) (sum+48);
break;
case '-':
sum = dataArray[i-1] - dataArray[i+1];
dataArray[i+1] = (char) (sum+48);
break;
case '*':
sum = (dataArray[i-1]-48) * (dataArray[i+1]-48);
dataArray[i+1] = (char) (sum+48);
break;
default:
break;
}
}
sc.close();
System.out.println(sum);
}
}