去空格的四则运算表达式求值-Java
笔记
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));
}
}
去空格的四则运算表达式求值-Java的更多相关文章
- 数据结构课程设计四则运算表达式求值(C语言版)
本系统为四则运算表达式求值系统,用于带小括号的一定范围内正负数的四则运算标准(中缀)表达式的求值.注意事项: 1.请保证输入的四则表达式的合法性.输入的中缀表达式中只能含有英文符号"+ ...
- 利用栈实现算术表达式求值(Java语言描述)
利用栈实现算术表达式求值(Java语言描述) 算术表达式求值是栈的典型应用,自己写栈,实现Java栈算术表达式求值,涉及栈,编译原理方面的知识.声明:部分代码参考自茫茫大海的专栏. 链栈的实现: pa ...
- C语言之四则运算表达式求值(链栈)—支持浮点型数据,负数, 整型数据运算
运算符间的优先级关系: 链栈结构体定义: 数据域使用字符串长度为20的字符数组(故需要注意判断读取的字符串是运算符还是数值) 可支持浮点型数据,负数, 整型数据的运算 float EvaluateE ...
- 表达式求值(java)
今天去面试,考了这个,短时间没想出来... 太笨了! 后来想用栈和递归做 但是看了网上才知道,可以将中缀表达式转为后缀表达式,就极其方便了. import java.util.Scanner; imp ...
- 逆波兰表达式求值 java实现代码
根据逆波兰表示法,求表达式的值. 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式. 说明: 整数除法只保留整数部分. 给定逆波兰表达式总是有效的.换句话说 ...
- 表达式求值--Java实现
/*将中缀表达式--转化为后缀表达式--属于栈的一种应用 *具体思路: *1.扫描字符串,遇到操作数字符直接不管,存到一个字符串里边 *2.操作符优先级比较--定义了方法 * 栈中优先级高:出栈存进字 ...
- leetcode算法学习----逆波兰表达式求值(后缀表达式)
下面题目是LeetCode算法:逆波兰表达式求值(java实现) 逆波兰表达式即后缀表达式. 题目: 有效的运算符包括 +, -, *, / .每个运算对象可以是整数,也可以是另一个逆波兰表达式.同 ...
- java实现算术表达式求值
需要根据配置的表达式(例如:5+12*(3+5)/7.0)计算出相应的结果,因此使用java中的栈利用后缀表达式的方式实现该工具类. 后缀表达式就是将操作符放在操作数的后面展示的方式,例如:3+2 后 ...
- 蓝桥杯算法训练 java算法 表达式求值
问题描述 输入一个只包含加减乖除和括号的合法表达式,求表达式的值.其中除表示整除. 输入格式 输入一行,包含一个表达式. 输出格式 输出这个表达式的值. 样例输入 1-2+3*(4-5) 样例输出 - ...
随机推荐
- Git Best Practice All In One
Git Best Practice All In One git workflow 本地开发环境: 开发人员自测的,可以是自己本地部署的静态服务器,当然也可类似是运行 npm server类似的环境, ...
- HTML5 QRCode Scaner
HTML5 QRCode Scaner how to scan QR Code using the camera of the phone or website live demo https://c ...
- docs search & algolia & docsearch
docs search & algolia & docsearch https://www.algolia.com/docsearch https://www.algolia.com/ ...
- Make one your own Online Video Recorder by using WebRTC & vanilla javascript
Make one your own Online Video Recorder by using WebRTC & vanilla javascript Online Video Record ...
- 小程序 webview 自动打开新页面
小程序 webview 自动打开新页面 iframe 效果 https://nervjs.github.io/taro/docs/components/open/web-view.html 怎么阻止小 ...
- ElasticSearcher的安装以及安装过程中出现的问题
先给出参考链接,带安装成功后再进行总结整个过程. 参考链接:https://blog.csdn.net/fjyab/article/details/81101284 java操作ElasticSear ...
- Vue学习笔记-vue-element-admin 前端学习
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- 安装并运行Nacos
方式一:源码或者安装包 一.下载源码或者安装包 git clone https://github.com/alibaba/nacos.git 二.安装 cd nacos/ mvn -Prelease- ...
- 文字链接Link
效果展示: 代码展示: <el-table-column label="引流扫码人数" align="center"> <template s ...
- 将VMware虚拟机最小化到托盘栏
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可. 目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...