杂题——试题-算法训练-P0802-字符串表达式求解

发布时间:2024年01月17日

分析:

  • 读取表达式字符串
  • 用 StringBuffer 类型的变量 sb 把读取到的数字拼接成字符串
  • 每当遇到一个运算符,就把拼接成的 sb 字符串转成数字 number2,用上一个运算符进行运算。然后把当前的运算符保留下来,更新运算符
  • 处理边界
package no1_1;
import java.util.*;
public class Main {
    public static void main(String[] args) {
    	Scanner input=new Scanner(System.in);
    	String s=input.nextLine();
    	System.out.println(expression(s));
    }
    public static int expression(String s) {
    	StringBuffer sb=new StringBuffer();//用StringBuffer类型比String类型要灵活,因为String类型的长度不能随意改变
    	int result=0;//运算结果
    	char operator=' ';//运算符
    	for(int i=0;i<s.length();i++) {
    		char c=s.charAt(i);
    		if(Character.isDigit(c)) {//c为数字
    			sb.append(c);//拼接数字
    		}else {//c为运算符
    			int number2=Integer.parseInt(sb.toString());//类型转换:StringBuffer->String->Integer,得到一个运算数据
    			if(operator==' ') {//此处为表达式中的第一个数据
    				result=number2;
    			}else if(operator=='+') {//当前数字用在它前面的运算符进行运算
    				result+=number2;
    			}else if(operator=='-') {
    				result-=number2;
    			}
				operator=c;//把当前数字后面的运算符保留下来,用于下一次运算
    			sb.setLength(0);//清空字符串,准备存储一个运算数据
    		}
    	}
    	return result;
    }
}

?

文章来源:https://blog.csdn.net/weixin_72052233/article/details/135624017
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。