1.中缀表达式求值实现类
package edu.tcu.soft;
import java.util.Stack;
/**
* 功能:中缀表达式直接求值
*/
public class NifixExpre {
// 定义操作数栈和操作符栈
private Stack<Integer> operateNum = new Stack<Integer>();
private Stack<Character> operateChara = new Stack<Character>();
// 表达式处理(表达式:运算符【加、减、乘、除、左括号】 运算对象【正数、负数】)
int expressionHandler(String expre) {
char[] ex = expre.toCharArray();
char item;
// 顺序获取每一运算对象或者运算符
for (int i = 0; i < ex.length; i++) {
item = ex[i];
// 如果当前字符为(,将运算符压入栈内
if (item == '(') {
operateChara.push(item);
}
// 如果当前字符为运算符 ) ,将运算符栈的运算符出栈直到遇到第一个(
if (item == ')') {
// 将操作符栈里面的元素一直出栈,直到遇到第一个左括号为止
while (operateChara.peek() != '(') {
char o = operateChara.pop();// 获取操作符
Integer second = operateNum.pop();// 获取第二个运算对象
Integer first = operateNum.pop();// 获取第一个运算对象
Integer result = getResult(first, second, o);// 获取运算结果
operateNum.push(result);// 将运算结果入栈
}
if (operateChara.peek() == '(') {
// 将左括号移出栈
operateChara.pop();
}
}
if (item != '(' && item != ')') {
// 如果当前字符为运算符,入运算符栈
if (item == '+' || item == '-' || item == '*' || item == '/'
|| item == '#') {
// 如果操作符栈为空,入栈
if (operateChara.empty()) {
operateChara.add(item);
} else {
// 根据优先权的大小,判断操作符是否能进栈
if (isPush(item, operateChara.peek())) {
operateChara.push(item);
} else {
char o = operateChara.pop();// 获取操作符
Integer second = operateNum.pop();// 获取第二个运算对象
Integer first = operateNum.pop();// 获取第一个运算对象
Integer result = getResult(first, second, o);// 获取运算结果
operateChara.push(item); // 将当前的运算符入栈
operateNum.push(result);// 将运算结果入栈
}
}
}
// 如果当前字符为运算对象
else if (0 <= Integer.parseInt(String.valueOf(item))
&& Integer.parseInt(String.valueOf(item)) <= 9) {
operateNum.push(Integer.parseInt(String.valueOf(item)));
}
/*else if(0 <= Integer.parseInt(String.valueOf(item))
&& Integer.parseInt(String.valueOf(item)) <= 9){
Stack<Integer> stack=new Stack<>();
int amount=0;
while(0 <= Integer.parseInt(String.valueOf(ex[i]))
&& Integer.parseInt(String.valueOf(ex[i])) <= 9){
Integer sin=Integer.parseInt(String.valueOf(ex[i]));
stack.push(sin);
i++;
}
for(int j=0;j<stack.size();j++){
amount=(int) (amount+stack.pop()*Math.pow(10, j));
}
System.out.println("amount"+amount);
operateNum.push(amount);*/
}
}
return operateNum.peek();
}
// 判断是否要把操作符移入栈内
private boolean isPush(char item, Character peek) {
if (getPriority(item) > getPriority(peek))
return true;
return false;
}
// 获取操作符的优先权值
private int getPriority(Character peek) {
if (peek == '#') {
return 0;
}
if (peek == '(') {
return 1;
}
if (peek == '+' || peek == '-') {
return 2;
}
if (peek == '*' || peek == '/') {
return 3;
}
else {
return -1;
}
}
// 计算
private Integer getResult(Integer first, Integer second, char o) {
switch (o) {
case '+':
return first + second;
case '-':
return first - second;
case '*':
return first * second;
case '/':
return first / second;
default:
break;
}
return null;
}
}
package edu.tcu.soft;
public class Test {
public static void main(String[] args) {
NifixExpre expre=new NifixExpre();
System.out.println("中缀表达式求值:"+expre.expressionHandler("#3*(4+2)/2-5#"));
}
}
这个实现方法还不是很完善,只能进行个位数的加减乘除运算,
文章浏览阅读513次。版权声明:本文为博主原创文章,未经博主允许不得转载论文:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications链接:https://arxiv.org/abs/1704.04861 tensorflow官方链接:https://github.com/tensorflow/mod..._another emerging approach is low bit networks
文章浏览阅读1.1k次。MS14-068漏洞提权(限制条件:打了补丁或者域中有Win2012/2012R2的域控):首先,需要拥有一台域内普通用户(假设为用户A)账户权限,知道此账户的账号密码。然后依次执行如下命令1.Ipconfig /all //查询本机IP段,所在域等;记录所在的域的名字Net group “domain controllers” /domain 查看域控制器所以所在的域全名 WIN-D..._内网 域
文章浏览阅读135次。\n预测 3D 人体姿势可能不属于大多数人关注的范畴,但机器人技术、计算机图形学和其他关注运动学的领域(与物体运动有关的力学分支)却可以从能够做到这一点的系统中受益匪浅。此前,由谷歌提出的姿势预测成为应用人工智能(AI)的任务之一,但先前的相关工作遇到了一些障碍:数字关节和骨骼会向不自然的方向拉伸,特别是当关节旋转时。\n\n幸运的是,Facebook的人工智能研究部门,谷歌大脑和苏黎世联邦理工学..._ai模型 人物旋转预测
文章浏览阅读144次。分享一下在微信里怎么实现预约链接_微信预约链接
文章浏览阅读137次。小蚂蚁说:随着深度学习的快速发展,以及在图像、语音领域取得的不错成果,基于深度学习的自然语言处理技术也日益受到人们的关注。计算机是怎么理解人类的语言的呢?传统机器学习的应用,常常是利用上述人工总结的文本特征,但往往会遇到一些问题。比如“猫”和“咪”这两词语的语义很接近(即近义词),但计算机并不能真正的在词语语义层面理解,只是把他们当作..._支付宝文本相关性判定
文章浏览阅读815次。JavaSe·常用API篇(五) Math类1. Math类概述java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单2. 基本运算的方法public static double abs(double a) :返回 double 值的绝对值double..._java api 加math.前缀调用输出e 的对数值
文章浏览阅读832次。Ubuntu默认使用gedit UTF-8编码方式打开txt文本文件,而Windows中文文本使用GBK2312编码,因此会出现中文乱码问题。解决方案如下:1. 使用图形界面修改gedit默认编码方式在终端输入dconf-editor(命令无效则根据提示安装,即dconf-tools),逐渐展开org/gnome/gedit/preferences/encodings,在auto-dete_windows txt在ubuntu乱码
文章浏览阅读692次。题目描述样例思路对于糖果的种类k,每种糖果存在选或者不被选的情况,因此可以将其理解为二进制数例如,当k为5的时候,00001就可以表示1,2,3,4号糖果没被选,5号糖果被选,再如,10100就表示1号和3号糖果被选择了,那么如何实现这种二进制表示状态呢?这就是今天的主角:状态压缩,即利用二进制来表示集合中元素的各种状态,首先我们需要了解状态压缩涉及到的位运算:·~:按位取反运算符,如~10=01·&:按位与运算符,其口诀是:同一为一,其余为零,例如:10011&_[蓝桥杯 2019 省 a] 糖果
文章浏览阅读1w次,点赞7次,收藏43次。slowfast模型浅析业务场景SlowFast模型业务场景背景非常固定动作持续时间短.快SlowFast模型使用双流卷积输入,一个慢通道,一个快通道,分别提取空域信息以及时域信息。关键点:Slow Pathway:γ\gammaγ是采样步长,即将原始视频按照该步长取样,一般取16, 即16帧取一张关键帧,TTT是采样次数,即一共采样多少次。所以慢通道的一次输入总帧数为T×γT \times \gammaT×γFast Pathway:α是帧采样倍数,β是通道倍数\alpha是帧_slowfast模型
文章浏览阅读70次。 在官网下载vscode 下载安装open jdk和maven 2.1. 这里之所以用的是open jdk而非sun jdk,是因为通过vs code提示的链接进入的网站是open jdk,因此我不了解sun jdk是否可行。 我下载的是jdk11,具体下哪个看自己需求。 下载下来..._vscod配置java -baijiahao
文章浏览阅读2.2k次。2、使用yum安装软件yum -y install openssh3、升级结束后去cachedir下将所有目录下的rpm文件取出组合在一起即为当前安装软件所需的所有文件二、使用yum downloadonly下载安装包yum -y install --downloadonly --downloaddir=./ openssh其中--downloadonly 只下载不安装--downloaddir 下载安装包的位置..._centos 安装软件时下载
文章浏览阅读1.4w次,点赞14次,收藏48次。创建React项目。npm无法识别_创建一个react项目