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

杂题——试题-算法训练-P0802-字符串表达式求解_第1张图片

分析:

  • 读取表达式字符串
  • 用 StringBuffer 类型的变量 sb 把读取到的数字拼接成字符串
  • 每当遇到一个运算符,就把拼接成的 sb 字符串转成数字 number2,用上一个运算符进行运算。然后把当前的运算符保留下来,更新运算符
  • 处理边界
  • 杂题——试题-算法训练-P0802-字符串表达式求解_第2张图片
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;iString->Integer,得到一个运算数据
    			if(operator==' ') {//此处为表达式中的第一个数据
    				result=number2;
    			}else if(operator=='+') {//当前数字用在它前面的运算符进行运算
    				result+=number2;
    			}else if(operator=='-') {
    				result-=number2;
    			}
				operator=c;//把当前数字后面的运算符保留下来,用于下一次运算
    			sb.setLength(0);//清空字符串,准备存储一个运算数据
    		}
    	}
    	return result;
    }
}

 

你可能感兴趣的:(数据结构与算法(java版),算法)