java 四则混合运算_四则混合运算,java实现
package com.interview.prepare;
/*
* 四则运算,没有括号,数字均小于零,其中中间运算过程取整。
* 首先将运算时转换为逆波兰式(后缀式)
* 然后通过一个栈辅助运算。当信息为数字时入栈,当信息为符号时~(~代表+-* /
* 一种),出栈并
* 做运算top2~top1
* 测试用例 3+8*2/9-2 结果输出2
*
*/
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class Compute {
public static void main(String args[]){
String str = "3+8*2/9-2";
System.out.println(getRes(str));
}
public static int getRes(String str){
char[] array = str.toCharArray();
List output = new ArrayList();;
Stack sign = new Stack();
for(int i=0;i
{
if(array[i]>'0'&&array[i]<='9'){
output.add(array[i]);
}
else if(sign.empty()||getBoolean(sign,array[i]))
{
sign.push(array[i]);
}
else{
while(!sign.empty()&&!getBoolean(sign, array[i]))
output.add(sign.pop());
sign.push(array[i]);
}
}
while(!sign.empty())
{
output.add(sign.pop());
}
System.out.println(output);
Stack res = new Stack();
Integer result = null;
for(Character temp :output)
{
if(temp>'0'&&temp<='9')
{
res.push(temp-'0');
}
else {
int top1 = res.pop();
int top2 =res.pop();
switch(temp){
case '+':
result = top2+top1;
break;
case '-':
result = top2-top1;
break;
case '*':
result = top2*top1;
break;
case '/':
result = top2/top1;
break;
}
res.push(result);
}
}
return result;
}
private static boolean getBoolean(Stack stack,char element)
{
Character c = (Character)stack.peek();
if((c=='+'||c=='-')&&(element=='*'||element=='/'))
return true;
return false;
}
}
0
顶
1
踩
分享到:
2012-03-01 14:15
浏览 1420
评论
1 楼
yuelangyc
2012-03-01
当数字为2位数的时候,结果就不准了。
java 四则混合运算_四则混合运算,java实现相关推荐
- # 异运算_小学数学运算三要点:定律、法则与顺序(解析)
很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差.其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑,比如小学的运算中,很多孩子并没有了解到运算 ...
- mysql关系运算_数据库关系运算
前言 前面已经说了数据系统的概述了,关系模型是目前用得最多的数据模型,其中一个优点就是:有严格的数学理论根据.本文就是来讲解数据库中的各种关系运算的!本文不做数学概念的深入,只要理解相关的概念即可! ...
- labview实现异或运算_异或运算 XOR 教程
大家比较熟悉的逻辑运算,主要是"与运算"(AND)和"或运算"(OR),还有一种"异或运算"(XOR),也非常重要. 本文介绍异或运算的含义 ...
- python 开运算_图像开运算和闭运算
如果您觉得本文不错,帮忙点赞哦! 一. 图像形态学处理 -- 膨胀和腐蚀 图解图像腐蚀和膨胀 ↑ 二. 开运算与闭运算: 开运算:先腐蚀后膨胀,能够消除图像区域外的小白点(噪声). 闭运算:先膨胀后腐 ...
- java 基础 笔试题_非常全面的java基础笔试题
1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...
- java中char类型_【考点】JAVA中的char类型
写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...
- java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?
部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...
- java class 文件分析_大概优秀的java程序员都要会分析class文件吧
相信大家在学java的时候都会听到这样的一些结论: enum 是一个类 泛型的实现使用了类型擦除技术 非静态内部类持有外部类的引用 需要将自由变量声明成final才能给匿名内部类访问 ... 初学的时 ...
- java list e 查找_源码(04) -- java.util.ListE
java.util.List 源码分析(JDK1.7) ------------------------------------------------------------------------ ...
最新文章
- SQL Server 2008最直观的变化上(三)
- linux 程序读写Env分区 --- mtdparts,/dev/mtd*,mtd_debug
- navicat如何导入sql文件
- UIApplication,UIWindow,UIViewController,UIView(layer)
- [css] 你所理解的css高级技巧有哪些?
- stream iterators源代码详解
- 图片服务 - thumbor成像
- java项目流程_Java项目开发全流程实践
- 联想y470上三代cpu_AMD三代线程撕裂者首测 单核不再是问题(二)
- A*寻路算法基于C#实现
- Java自学如何找工作?
- 原生JS实现登录功能,本地Cookie保存登录信息---【调用网易云API接口】---超详细讲解
- OSPF路由协议实验配置命令
- X32位 天堂2 二章/三章 服务端协议号修改方法
- java功能模块_系统功能模块详解 java应该学习什么?
- STM32自举程序原理和使用
- 五行通天地 八卦定乾坤--打算按照先天八卦的形制重构Lite模版引擎的指令集...
- x99芯片组 服务器,X99芯片组详情:不兼容的LGA2011-3插槽,6个USB 3.0接口
- 如何理解新技术带来的新资产类别?
- 谷歌开始卷自己,AI架构Pathways加持,推出200亿生成模型