去空格的四则运算表达式求值-Java
2024-09-01 23:01:20
笔记
package com.daidai.day4.demo1;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class HelloWorld{
public static void main(String args[]){
String a;
int buf=0;
a=new Scanner(System.in).nextLine().trim().replace(" ","");
ArrayList<Integer> number=new ArrayList<Integer>();
ArrayList<String> op=new ArrayList<String>();
for(int i = 0; i<a.length(); i++){
if(a.charAt(i)>='0'&&a.charAt(i)<='9') {
buf = buf * 10 + (a.charAt(i) - '0');
if(i==a.length()-1){
number.add(buf);
}
}else{
if(op.isEmpty()){
number.add(buf);
op.add(a.charAt(i)+"");
}else{
if(op.get(op.size()-1).equals("*")){
number.set(number.size()-1,number.get(number.size()-1)*buf);
op.remove(op.size()-1);
op.add(a.charAt(i)+"");
}else if(op.get(op.size()-1).equals("/")){
number.set(number.size()-1,number.get(number.size()-1)/buf);
op.remove(op.size()-1);
op.add(a.charAt(i)+"");
}else{
number.add(buf);
op.add(a.charAt(i)+"");
}
}
buf=0;
}
}
while(!op.isEmpty()){
if(op.get(op.size()-1).equals("+")){
number.set(number.size()-2,number.get(number.size()-2)+number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}else if(op.get(op.size()-1).equals("-")){
number.set(number.size()-2,number.get(number.size()-2)-number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}else if(op.get(op.size()-1).equals("*")){
number.set(number.size()-2,number.get(number.size()-2)*number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}else{
number.set(number.size()-2,number.get(number.size()-2)/number.get(number.size()-1));
number.remove(number.size()-1);
op.remove(op.size()-1);
}
}
System.out.println(number.get(0));
}
}
最新文章
- 妙用psexec分析关机一直挂起的Windows update 更新
- Python的数据类型
- SQL Server数据库性能优化之SQL语句篇【转】
- animated js动画示例
- MySQL配置文件mysql.ini参数详解、MySQL性能优化
- 得到设备是何种iPhone设备 + 怎么获得启动页面图片
- 分页-pagination
- offset/client/scroll一些总结
- Json 调用 天气API 实例
- C#调用Win32 api学习总结
- 用shell写个100以内的所有数字之和
- break用法
- MySQL学习(一)日志与索引 --- 2019年1月
- Android为TV端助力:RecyclerView更新数据时焦点丢失
- UIView的绘制原理
- Android 开发 CoordinatorLayout 协调者布局 与 ConstraintLayout约束布局 两者的关系
- Deep Neural Networks for Object Detection(翻译)
- mysql字符集问题汇总
- 每天跟着书敲Mysql
- 注册表键值明明存在OpenSubKey始终返回null,解决方案
热门文章
- Web Components All In One
- ES2021 &; Pipeline operator (|>;) / 管道运算符 |>;
- .net core 和 WPF 开发升讯威在线客服系统:怎样实现拔网线也不丢消息的高可靠通信(附视频)
- uni-app小白入门自学笔记(二)
- luogu4464:莫比乌斯反演,积性函数和伯努利数
- java与freemarker遍历map
- selectors版socket
- Wireshark使用记录
- JavaScript实现动态添加员工
- POJ-3080(KMP+多个字符串的最长公共子串)