public class Counter {

/**用递归算法,把括号内的公式算出然后递归

* @param args

*/

public static void calculator (String str){

//System.out.println(str);

//装载到StringBuffer提升效率

StringBuffer cstr= new StringBuffer(str);

//用正则把算式内的剩除符号和数字分组,

Pattern p=Pattern.compile("\\-?[0-9]+(\\.[0-9]+)?|[*/]");

if(cstr.length()==0)System.out.println("请输入计算式");

//找出最后一个括号的坐标

int start=cstr.lastIndexOf("(");

//叛断公式是否还有括号

if(start!=-1){

int end=cstr.indexOf(")",start);

StringBuffer spstr=new StringBuffer( cstr.subSequence(start+1, end));

//删去截去的括号内的基本公式

cstr=cstr.delete(start, end+1);

//正则匹配

Matcher m =p.matcher(spstr);

List numlist=new ArrayList();

//把基本公式的值和乘除符号加入到给组

while(m.find()){

numlist.add(m.group());

}

//调用计算方法并返回结果

StringBuffer str1=count(numlist);

//把结果INSERT到指定位置

cstr=cstr.insert(start, str1);

}else{

//最后一次无括号计算基本公式并打印最终结果

Matcher m =p.matcher(cstr);

List numlist=new ArrayList();

while(m.find()){

numlist.add(m.group());

}

StringBuffer str1=count(numlist);

System.out.println(str1);

return;

}

//递归数组

// System.out.println(cstr);

calculator(new String(cstr));

}

/**

*

* @param list  接收基本公式数组

* @return 返回计算结果字符串

*/

private static StringBuffer count(List list){

// System.out.println(list);

double num = 0;

for (int i = 0; i < list.size(); i++) {

if(list.get(i).equals("*")||list.get(i).equals("/")){

Double  d=list.get(i).equals("*")?Double.parseDouble((String) list.get(i-1))*Double.parseDouble((String) list.get(i+1)):Double.parseDouble((String) list.get(i-1))/Double.parseDouble((String) list.get(i+1));

list.add(i-1, d+"");list.remove(i);list.remove(i);list.remove(i);

i=i-1;

}

}

for (int i = 0; i < list.size(); i++) {

num+=Double.parseDouble((String) list.get(i));

}

return  new StringBuffer(num+"");

}

public static void main(String[] args) {

calculator("3+2+((5-6)*(-3+3/2)/2)");

}

}

原文:http://www.cnblogs.com/lalahui/p/6428013.html

java完善四则计算器_java 四则混合运算 计算器相关推荐

  1. python 实现四则混合运算计算器

    python 实现四则混合运算计算器 这个是基于四则混合运算计算器 Calculator的修改版,新增了处理()的功能 调试次数较少,应该尚有bug未发现,如果发现有Bug,欢迎大家来评论指正 四则混 ...

  2. python 四则混合运算计算器

    python 四则混合运算计算器 思路:(1)获取一个运算公式(四则混合) (2)对获取的公式进行处理,因为Input获取的是字符串形式,这里处 理时将之转换成列表,并对其中包含的多位数进行处理.见D ...

  3. php混合运算计算器,混合运算计算器

    用计算器怎样计算加减乘除混合运算 第一点,有一个简单的计算器,显示屏幕比较大,而且按键比较大,比较简单,可以非常快的使用乘除混合运算. 第二点,可以将如下的一道题进行一次性运算:"(101* ...

  4. js实现四则混合运算计算器

    最近想用js做一个简单的计算器,不过网上的例子好像大部分都是直接从左到右挨个计算,就好像1+2*5,就会先计算1+2,再计算3*5,并没有实现运算符的优先级,这里找到了一种方法实现,来总结一下.不过这 ...

  5. 四则混合运算c语言程序例,C++实现四则混合运算计算器

    本文实例为大家分享了C++实现四则混合运算的计算器,供大家参考,具体内容如下 计算器是带括号的四则运算实际上利用的是栈后进先出的原则 转换思想: #define _CRT_SECURE_NO_WARN ...

  6. C语言实现加减乘除混合运算计算器

    简易计算器 把输入的字符串数字和符号分离 #include<stdio.h> #include<stdlib.h> #include<string.h> int m ...

  7. java实现混合运算_java图形化界面实现简单混合运算计算器

    写了好几天了终于写完了这个四则运算计算器,总代码放在后面 截图如下: 首先是布局都比较简单,最上面的一个框是总的输出框, 第二个框是每次输入的数字显示在框内, 对于每一个按钮都增加监听器, 对于数字按 ...

  8. c语言字符型计算器,求用c语言编程四则混合运算计算器?

    #include #include #include char token[61]; /*存放表达式字符串的数组*/ int n=0; void error(void) /*报告错误函数*/ { pr ...

  9. 四则混合运算c语言程序例,用c语言编程四则混合运算计算器

    满意答案 #include #include #include char token[61]; /*存放表达式字符串的数组*/ int n=0; void error(void) /*报告错误函数*/ ...

最新文章

  1. WebAssembly 系列(一):生动形象地介绍 WebAssembly
  2. 算法与数据结构(python):递归
  3. 如何找到 SAP 电商云 Spartacus UI 导航 navigation 的驱动器 - NavigationEntryItemEffects
  4. C++基础学习一(基础之基础)
  5. action mutation 调用_Vuex源码学习(六)action和mutation如何被调用的(前置准备篇)...
  6. 视觉SLAM十四讲(1):预备知识
  7. 《TensorFlow:实战Google深度学习框架》——5.3 TensorFlow中的变量初始化函数
  8. [Hibernate系列—] 3. 映射文件与使用SchemaExport自动产生Schema
  9. hibernate11--Criteria查询
  10. Writing udev rules
  11. Send函数和Recv函数解析
  12. qt获取本机IP地址
  13. 三个简单的C语言程序
  14. 第一节 细胞是生命活动的基本单位
  15. 【毕业设计】python+深度学习+opencv实现植物识别算法系统
  16. 微信订阅号和服务器,微信订阅号与服务号有什么不同?
  17. java503错误是什么_打开网页后出现503 service unavailable等字样,什么意思
  18. java打印 X XXX XXXXX
  19. day---06 文件的操作
  20. 解决No EPCS layout data --- looking for section [EPCS-xxxxx]

热门文章

  1. ERP沙盘人机模拟系统人机对抗第一名攻略
  2. 欧姆龙PLC-CP1H与fanuc机器人走eip配置文档
  3. 威纶通界面UI,复制可用,威伦通触摸屏设计界面
  4. TiDB 重要监控指标详解
  5. ios 比 android 精致,苹果没创新了?这七个方面,iOS 14比Android 10简直强太多
  6. 课设舵机狗总结文——CubeMX+STM32F4+FreeRTOS+USART2+幻尔舵机控制板 实现动作组稳定运动
  7. There is no getter for property named ‘*‘ in ‘class
  8. DOM操作style属性
  9. Python系列14-外星人入侵项目
  10. 自己写了个魔兽显血改键工具