java字符串表达式转算术运算求结果
发布日期:2021-08-22 21:41:53 浏览次数:4 分类:技术文章

本文共 1637 字,大约阅读时间需要 5 分钟。

hot3.png

次方法是一个简单的string字符串转算数运算的方法

不支持带括号限定运算顺序的运算 如:1+1+(1*1)这样的不支持  

仅支持1+1+1-1*1/1 这样不带括号的运算

下面是原码

public static Integer calcu(String s){		Integer count=0;		String[] st=s.split("[+,[-]]");		Pattern p1 = Pattern.compile("[+,[-]]?");		Matcher m1 = p1.matcher(s);		List
l1 = new ArrayList<>();//按顺序存放加减符号 while (m1.find()) { String v1=m1.group(); if (v1.replaceAll(" ", "").length()==0) { continue; } if (v1.contains("+")) { l1.add("+"); }else if(v1.contains("-")){ l1.add("-"); } } List
l2 = new ArrayList<>();//按顺序存放乘除运算后待进行加减运算的数字 for (String s1 : st) { if (s1.contains("*")||s1.contains("/")) { Pattern p = Pattern.compile("[*,/]?"); Matcher m = p.matcher(s1); List
l3 = new ArrayList<>();//存放运算符号 while (m.find()) { String v1=m.group(); if (v1.replaceAll(" ", "").length()==0) { continue; } if (v1.contains("*")) { l3.add("*"); }else if(v1.contains("/")){ l3.add("/"); } } String[] st1=s1.split("[*,/]"); Integer i1=Integer.parseInt(st1[0]); for (int i = 0; i < l3.size(); i++) { String v2 = l3.get(i); if (v2.contains("*")) { i1=i1*Integer.parseInt(st1[i+1]); }else if(v2.contains("/")){ i1=i1/Integer.parseInt(st1[i+1]); } l2.add(i1); } }else { l2.add(Integer.parseInt(s1)); } } count=l2.get(0); for (int i = 0; i < l1.size(); i++) { String v3 = l1.get(i); if (v3.contains("+")) { count = count+l2.get(i+1); }else if(v3.contains("-")){ count = count-l2.get(i+1); } } return count; }

 

转载于:https://my.oschina.net/2892328252/blog/790438

转载地址:https://blog.csdn.net/weixin_33755847/article/details/92438850 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:mybatis generator xml元素解说
下一篇:Linux kudzu !!!上天了

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年04月13日 18时41分01秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

功能更新!C 函数也能在 MicroPython 中被调用啦 2019-04-29
东软载波携ES32+RT-Thread走进海尔集团 2019-04-29
今晚8点直播预告:RT-Thread Studio等相关主题答疑 2019-04-29
Linux内核在中国大发展的黄金十年-写于中国Linux存储、内存管理和文件系统峰会十周年之际... 2019-04-29
物联网 20 年简史大揭秘! 2019-04-29
开源项目|RT-Thread 软件包应用作品:水墨屏桌面台历 2019-04-29
珠联璧合!基于i.MX RT和RT-Thread的物联网云接入方案 2019-04-29
基于RTT-MicroPython制作自带BGM的新型肺炎晴雨表 2019-04-29
Arm宣布推出Cortex-M55核心和Ethos-U55 microNPU,瞄准低功耗Edge AI 2019-04-29
开源项目|RT-Thread 软件包应用作品:小闹钟 2019-04-29
在 RT-Thread Studio 上使用 RT-Thread Nano 2019-04-29
开源项目|软件包应用作品:通用物联网系统平台 2019-04-29
【经验分享】RT-Thread UART设备驱动框架初体验(中断方式接收带\r\n的数据) 2019-04-29
单片机里面的CPU使用率是什么鬼? 2019-04-29
推荐一个优质Linux技术公众号-作者都是一线Linux代码贡献者们哦 2019-04-29
RT-Thread 编程风格指南 2019-04-29
95后高校电子教师,软硬兼修有趣有料! 2019-04-29
使用 STM32 通用 Bootloader ,让 OTA 更加 Easy 2019-04-29
Cache 的基本概念与工作原理 2019-04-29
装机量超亿台 RISC-V +IoT OS!中科蓝讯与RT-Thread战略合作,共推自主物联网生态发展 2019-04-29