Java实现:利用栈进行后缀表达式计算实例
来源:互联网 发布:obs直播软件ipad 编辑:程序博客网 时间:2024/05/19 06:38
/*
* 后缀表达式的实现
*/
import java.util.Scanner;
import java.util.Stack;
import javax.management.RuntimeErrorException;
public class OperateStack {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 设置存储数字的栈
Stack<String> stack = new Stack<>();
int sum = 0;
String readStrs = in.next();
char[] charArr = readStrs.toCharArray();
for (int i = 0; i < charArr.length; i++) {
String element = String.valueOf(charArr[i]);
if (isOperator(element)) {// 是操作符号*-+/,执行
if (stack.size() >= 2) {// 必须栈中元素大于2
System.out.println(stack.peek());
if (stack.peek().matches("[0-9]")) {
int num1 = Integer.parseInt(stack.pop());
int num2 = Integer.parseInt(stack.pop());
sum = whichOperator(element, num2, num1);
stack.push(String.valueOf(sum));
}else{//输入中不是数字和操作符报错
throw new RuntimeException("请输入数字和操作符");
}
} else {// 栈中小于2个元素报错
throw new RuntimeException("请输入正确的计算式子");
}
} else {// 不是操作符,是数字就压入栈中
stack.push(element);
}
}
System.out.println("结果是:" + sum);
in.close();
}
/**
* 判断是否为操作符
* @param operator
* @return
*/
public static boolean isOperator(String operator) {
String operatorList = "*+-/";
if (operatorList.contains(operator))
return true;
return false;
}
/**
* 判断是哪一个操作符,并做出运算
* @param operator
* @param num1
* @param num2
* @return
*/
public static int whichOperator(String operator, int num1, int num2) {
switch (operator) {
case "+":
return num1 + num2;
case "-":
return num1 - num2;
case "*":
return num1 * num2;
case "/":
return num1 / num2;
default:
return Integer.MAX_VALUE;
}
}
}
* 后缀表达式的实现
*/
import java.util.Scanner;
import java.util.Stack;
import javax.management.RuntimeErrorException;
public class OperateStack {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 设置存储数字的栈
Stack<String> stack = new Stack<>();
int sum = 0;
String readStrs = in.next();
char[] charArr = readStrs.toCharArray();
for (int i = 0; i < charArr.length; i++) {
String element = String.valueOf(charArr[i]);
if (isOperator(element)) {// 是操作符号*-+/,执行
if (stack.size() >= 2) {// 必须栈中元素大于2
System.out.println(stack.peek());
if (stack.peek().matches("[0-9]")) {
int num1 = Integer.parseInt(stack.pop());
int num2 = Integer.parseInt(stack.pop());
sum = whichOperator(element, num2, num1);
stack.push(String.valueOf(sum));
}else{//输入中不是数字和操作符报错
throw new RuntimeException("请输入数字和操作符");
}
} else {// 栈中小于2个元素报错
throw new RuntimeException("请输入正确的计算式子");
}
} else {// 不是操作符,是数字就压入栈中
stack.push(element);
}
}
System.out.println("结果是:" + sum);
in.close();
}
/**
* 判断是否为操作符
* @param operator
* @return
*/
public static boolean isOperator(String operator) {
String operatorList = "*+-/";
if (operatorList.contains(operator))
return true;
return false;
}
/**
* 判断是哪一个操作符,并做出运算
* @param operator
* @param num1
* @param num2
* @return
*/
public static int whichOperator(String operator, int num1, int num2) {
switch (operator) {
case "+":
return num1 + num2;
case "-":
return num1 - num2;
case "*":
return num1 * num2;
case "/":
return num1 / num2;
default:
return Integer.MAX_VALUE;
}
}
}
阅读全文
0 0
- Java实现:利用栈进行后缀表达式计算实例
- 利用数组模拟栈实现简单的表达式中缀转后缀并进行计算
- 利用栈将中缀表达式转换为后缀表达式并进行计算
- 表达式计算,输出后缀表达式,栈实现
- 使用堆栈计算后缀表达式--java实现
- 利用stack计算后缀表达式
- 利用STL计算后缀表达式
- 计算后缀表达式、Java
- 利用顺序栈计算后缀表达式(逆波兰表达式)
- 栈实现后缀表达式的计算
- JAVA实现中缀表达式转换为后缀表达式并计算
- java实现中缀表达式转后缀表达式并且计算
- Java实现中缀表达式转后缀表达式并计算结果
- 表达式转换成后缀表达式进行计算
- 【数据结构_栈_Stack_1043】利用栈完成后缀表达式计算
- 堆栈实现,计算后缀表达式
- 【Java数据结构的实现】之系列三栈的实现(使用栈计算后缀表达式)
- 用java实现计算String类型的四则运算——用栈和后缀表达式实现
- Volley网络框架详解
- linux 如何杀掉 tty终端
- [LintCode]407.加一
- LeetCode-13Sum
- ASP.NET Core服务器综述
- Java实现:利用栈进行后缀表达式计算实例
- Python的基础知识点(二)
- 自定义复选框,复选框样式修改,重写复选框
- CCF之Z形扫描
- 帧动画的实现
- AutoPilot02(去哪儿2017校招真题) 无法AC
- linux设备和驱动加载的先后顺序
- 场景文字检测之TextBoxes
- 2015年上半年 软件设计师 上午试卷 综合知识-2