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实现相关推荐

  1. # 异运算_小学数学运算三要点:定律、法则与顺序(解析)

    很多孩子的数学不好,尤其是女孩子.家长往往认定为数学不好就是孩子不擅长,能力差.其实未必,有的孩子数学不好的原因并不在于智商,而是没有理解到数学的方法与逻辑,比如小学的运算中,很多孩子并没有了解到运算 ...

  2. mysql关系运算_数据库关系运算

    前言 前面已经说了数据系统的概述了,关系模型是目前用得最多的数据模型,其中一个优点就是:有严格的数学理论根据.本文就是来讲解数据库中的各种关系运算的!本文不做数学概念的深入,只要理解相关的概念即可! ...

  3. labview实现异或运算_异或运算 XOR 教程

    大家比较熟悉的逻辑运算,主要是"与运算"(AND)和"或运算"(OR),还有一种"异或运算"(XOR),也非常重要. 本文介绍异或运算的含义 ...

  4. python 开运算_图像开运算和闭运算

    如果您觉得本文不错,帮忙点赞哦! 一. 图像形态学处理 -- 膨胀和腐蚀 图解图像腐蚀和膨胀 ↑ 二. 开运算与闭运算: 开运算:先腐蚀后膨胀,能够消除图像区域外的小白点(噪声). 闭运算:先膨胀后腐 ...

  5. java 基础 笔试题_非常全面的java基础笔试题

    1.下列说法正确的是() (程序结构) A java程序的main方法必须写在类甩面 B java程序中可以有多个main方法 C.java程序中类名必须与文件名一样 D.JAVA程序的main方法中 ...

  6. java中char类型_【考点】JAVA中的char类型

    写在前面: 本周,在我们同学的刷题群里,一位同学上传了一道关于char的题,引起的不少同学的热议.热议的同时,我们也发现近乎一半的同学对char的基础知识一知半解,今天我们给大家一个浅显易懂的解释,赶 ...

  7. java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?

    部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...

  8. java class 文件分析_大概优秀的java程序员都要会分析class文件吧

    相信大家在学java的时候都会听到这样的一些结论: enum 是一个类 泛型的实现使用了类型擦除技术 非静态内部类持有外部类的引用 需要将自由变量声明成final才能给匿名内部类访问 ... 初学的时 ...

  9. java list e 查找_源码(04) -- java.util.ListE

    java.util.List 源码分析(JDK1.7) ------------------------------------------------------------------------ ...

最新文章

  1. SQL Server 2008最直观的变化上(三)
  2. linux 程序读写Env分区 --- mtdparts,/dev/mtd*,mtd_debug
  3. navicat如何导入sql文件
  4. UIApplication,UIWindow,UIViewController,UIView(layer)
  5. [css] 你所理解的css高级技巧有哪些?
  6. stream iterators源代码详解
  7. 图片服务 - thumbor成像
  8. java项目流程_Java项目开发全流程实践
  9. 联想y470上三代cpu_AMD三代线程撕裂者首测 单核不再是问题(二)
  10. A*寻路算法基于C#实现
  11. Java自学如何找工作?
  12. 原生JS实现登录功能,本地Cookie保存登录信息---【调用网易云API接口】---超详细讲解
  13. OSPF路由协议实验配置命令
  14. X32位 天堂2 二章/三章 服务端协议号修改方法
  15. java功能模块_系统功能模块详解 java应该学习什么?
  16. STM32自举程序原理和使用
  17. 五行通天地 八卦定乾坤--打算按照先天八卦的形制重构Lite模版引擎的指令集...
  18. x99芯片组 服务器,X99芯片组详情:不兼容的LGA2011-3插槽,6个USB 3.0接口
  19. 如何理解新技术带来的新资产类别?
  20. 谷歌开始卷自己,AI架构Pathways加持,推出200亿生成模型

热门文章

  1. 影评之《教父》维托·柯里昂
  2. 5G 核心网 PDU Session Release 信令流程
  3. Builder模式与Factory模式区别
  4. UUID生成随机数和时间戳
  5. VBA数组赋值(1/2)-- 一维数组
  6. 【Android Studio】实现简易猴子摘桃功能
  7. Android Studio 入门
  8. 为什么手术后要插那么多管子
  9. MySQL索引底层实现原理(B树和B+树)
  10. zz蚂蚁算法概述zz