一、题目
编写一个字符串表达式求解函数int expression(char* s); 输入一个字符串表达式,返回它的结果。表达式长度不会超过100。表达式最少有一项,且以等号=结束。表达式中只包含加法和减法,且运算均在整数范围之内。
编写main函数测试该函数的正确性。
输入:
2+2345+913-3=
输出:
3257
二、思路
在本题中,输入一个字符串表示一个数学表达式
数学表达式很简单只包括加号和减号
所以只利用String.split()方法将字符串分割成小部分放到字符串数组中
然后再进行加减操作
三、代码实现
定义方法expression(String s)
首先将字符串以 + 分割 放到字符串数组
for循环判断以加号分割的字符串数组是否有包含 - 号的元素
再以 - 号分割
当下标为偶数的时候说明这个值需要加到结果中
当下标为奇数的时候说明这个值需要减掉
最后返回结果
而对于输入的 = 号
在调用方法前忽略掉即可
import java.util.Scanner;
public class Main{
static int expression(String s){
int res = 0;
String[] strings = s.split("\\+");
String[] strings1 = null;
for(int i = 0;i < strings.length;i++){
if(strings[i].contains("-")){
strings1 = strings[i].split("-");
for(int j=0;j < strings1.length ; j++){
if(j % 2==0)
res += Integer.parseInt(strings1[j]);
else
res -= Integer.parseInt(strings1[j]);
}
}else{
res += Integer.parseInt(strings[i]);
}
}
return res;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
String str1 = str.substring(0,str.length()-1);
System.out.println(expression(str1));
}
}