javastring表达式计算的简单介绍

今天给各位分享javastring表达式计算的知识,其中也会对进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

1、Java 字符串算术表达式求值2、Java中的字符串转为计算表达式3、Java怎么实现输入一个string表达式然后输出计算的结果

Java 字符串算术表达式求值

Java 字符串算术表达式求值:

import java.util.ArrayList;

import java.util.Stack;

/**

*

* @author yhh

*

*/

public class Calculate {

/**

* 将字符串转化成List

* @param str

* @return

*/

public ArrayListString getStringList(String str){

ArrayListString result = new ArrayListString();

String num = “”;

for (int i = 0; i str.length(); i++) {

if(Character.isDigit(str.charAt(i))){

num = num + str.charAt(i);

}else{

if(num != “”){

result.add(num);

}

result.add(str.charAt(i) + “”);

num = “”;

}

}

if(num != “”){

result.add(num);

}

return result;

}

/**

* 将中缀表达式转化为后缀表达式

* @param inOrderList

* @return

*/

public ArrayListString getPostOrder(ArrayListString inOrderList){

ArrayListString result = new ArrayListString();

StackString stack = new StackString();

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

if(Character.isDigit(inOrderList.get(i).charAt(0))){

result.add(inOrderList.get(i));

}else{

switch (inOrderList.get(i).charAt(0)) {

case ‘(‘:

stack.push(inOrderList.get(i));

break;

case ‘)’:

while (!stack.peek().equals(“(“)) {

result.add(stack.pop());

}

stack.pop();

break;

default:

while (!stack.isEmpty() compare(stack.peek(), inOrderList.get(i))){

result.add(stack.pop());

}

stack.push(inOrderList.get(i));

break;

}

}

}

while(!stack.isEmpty()){

result.add(stack.pop());

}

return result;

}

/**

* 计算后缀表达式

* @param postOrder

* @return

*/

public Integer calculate(ArrayListString postOrder){

Stack stack = new Stack();

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

if(Character.isDigit(postOrder.get(i).charAt(0))){

stack.push(Integer.parseInt(postOrder.get(i)));

}else{

Integer back = (Integer)stack.pop();

Integer front = (Integer)stack.pop();

Integer res = 0;

switch (postOrder.get(i).charAt(0)) {

case ‘+’:

res = front + back;

break;

case ‘-‘:

res = front – back;

break;

case ‘*’:

res = front * back;

break;

case ‘/’:

res = front / back;

break;

}

stack.push(res);

}

}

return (Integer)stack.pop();

}

/**

* 比较运算符等级

* @param peek

* @param cur

* @return

*/

public static boolean compare(String peek, String cur){

if(“*”.equals(peek) (“/”.equals(cur) || “*”.equals(cur) ||”+”.equals(cur) ||”-“.equals(cur))){

return true;

}else if(“/”.equals(peek) (“/”.equals(cur) || “*”.equals(cur) ||”+”.equals(cur) ||”-“.equals(cur))){

return true;

}else if(“+”.equals(peek) (“+”.equals(cur) || “-“.equals(cur))){

return true;

}else if(“-“.equals(peek) (“+”.equals(cur) || “-“.equals(cur))){

return true;

}

return false;

}

public static void main(String[] args) {

Calculate calculate = new Calculate();

String s = “12+(23*3-56+7)*(2+90)/2”;

ArrayList result = calculate.getStringList(s); //String转换为List

result = calculate.getPostOrder(result); //中缀变后缀

int i = calculate.calculate(result); //计算

System.out.println(i);

}

}

Java中的字符串转为计算表达式

这需要写很长一段代码。

1、判断表达式中有没有括号,如果有括号,转第二步。没有括号转第三步。

2、把括号内的内容提取出来,作为一个新的表达式。转第三步

3、判断表达式中有没有乘号和除号,有转第四步。没有转第六步。

4、把乘除号和乘除号前后的数字提取出来,得到新的表达式,转第五步。

5、提取数字和符号,判断表达式是乘号还是除号,然后计算结果。返回。

6、表达式没有乘除号,有加减号。转第七步。

7、提取包含加减的表达式中的符号和数据,计算结果,返回。

就是这个道理,这里只是描述了带括号和加减乘除的表达式,如果有更多的运算符,则根据运算符优先级处理。

javastring表达式计算的简单介绍

Java怎么实现输入一个string表达式然后输出计算的结果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

//算式

public static void test32() throws Exception{

System.out.println(“请输入算式:”);

Scanner scanner = new Scanner(System.in);

String str = scanner.next(“-?\\d*\\.?\\d+[+-/*]-?\\d*\\.?\\d+”);

String[] xyStr = str.split(“[+-/*]”);

float x = Float.parseFloat(xyStr[0]);

float y = Float.parseFloat(xyStr[1]);

float r = 0;

char opt = ‘+’;

if(str.contains(“+”)){

opt = ‘+’;

r = x + y;

}else if(str.contains(“-“)){

opt = ‘-‘;

r = x – y;

}else if(str.contains(“*”)){

opt = ‘*’;

r = x * y;

}else if(str.contains(“/”)){

opt = ‘/’;

r = x / y;

}

System.out.println(x+””+opt+y+”=”+r);

}

关于javastring表达式计算和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

本文来自投稿,不代表【】观点,发布者:【

本文地址: ,如若转载,请注明出处!

举报投诉邮箱:253000106@qq.com

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2024年3月30日 21:53:27
下一篇 2024年3月30日 22:01:42

相关推荐

  • c语言mallloc使用的简单介绍

    C语言中使用malloc必须加#includemallo.h? 1、在C语言中使用malloc函数进行动态内存分配。malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节的内存块。 2、你可以看一下C语言那本…

    2024年5月23日
    4300
  • javascriptcanvas的简单介绍

    如何使用js在画布上绘制图形 1、可以使用 drawImage()方法把一幅图像绘制到画布上。 以使用三种不同的参数组合。最简单的调用方式是传入一个 HTML 元素,以及绘制该图像的起点的 x 和 y 坐标。 2、效果图:使用JavaScript在画布中绘制文本图形首先我们来看看要在画布上绘制文本图形,需要用到的最重要的属性和方法:font属性:定义文本的字…

    2024年5月23日
    4100
  • cortexm4linux的简单介绍

    Cortex-M4的主要功能 Cortex-M4提供了无可比拟的功能,以将[1] 32位控制与领先的数字信号处理技术集成来满足需要很高能效级别的市场。 Cortex-M4核心具有浮点单元(FPU)单精度,支持所有Arm单精度数据处理指令和数据类型。它还实现了一套完整的DSP指令和一个提高应用程序安全性的内存保护单元(MPU)。 主要是m4比m3多了dsp的支…

    2024年5月23日
    4300
  • 3desjavaphp的简单介绍

    php的3des加密结果与java不一致 他们的加密算法都是通用的,是可以解开的,只要你des的模式,加密长度,初始向量什么的都一样就可以。 JAVA写RSA加密,私钥都是一样的,公钥每次加密的结果不一样跟对数据的padding(填充)有关。Padding(填充)属性定义元素边框与元素内容之间的空间。padding简写属性在一个声明中设置所有内边距属性。 要…

    2024年5月23日
    4600
  • 黑客代码软件学习推荐歌曲的简单介绍

    我想自学编程代码,,目地是“黑”网站,开发出破解代码。有没有这方面的… 这个迭代周期不应该以周为周期或以月为周期发生,而是应该以日为周期。知识等待使用的时间越久,知识这把斧头就越钝。等待学习新知识的时间越长,你就越难以将其融入到代码中。 我认为这个问题问得本身就显得有点矛盾,想学却担心自己看不懂代码学不来,试问哪个编程人员不是从零开始的。坚定信念…

    2024年5月23日
    4600
  • java8种基本类型范围的简单介绍

    java中常用的数据类型有哪些 1、java数据类型分为基本数据类型和引用数据类型,基本数据类型有boolean 、long 、int 、char、byte、short、double、float。引用数据类型有类类型、接口类型和数组类型。 2、java中包含的基本数据类型介绍:\x0d\x0aJava共支持8种内置数据类型。内置类型由Java语言预先定义好,…

    2024年5月23日
    4600
  • linux系统与gpt的关系的简单介绍

    linux下查看分区是不是gpt 看分区会报错,比如:WARNING: GPT (GUID Partition Table) detected on /dev/sda! The util fdisk doesnt support GPT. Use GNU Parted.所以这个sda就是gpt的。 选择“管理”;在“磁盘管理”中,右键“磁盘0”,在弹出的右键…

    2024年5月23日
    5300
  • 北京黑客学习培训的简单介绍

    现在学什么好啊 包括建筑设计、服装设计、珠宝首饰设计等,选择适合自己的设计专业,好好学习,就业容易且收入高。学前教育专业:很多女生喜欢小孩子,且女生一般细心且有耐心,教育行业假期宽裕,工作环境单纯,就业机会多。 现在比较热门好就业的专业有人工智能、机械专业、电子商务专业、人力资源专业、金融学专业、小语种类专业等等。人工智能:人工智能领域的研究包括机器人、语言…

    2024年5月23日
    4000
  • javaee要学那些东西的简单介绍

    java主要学习哪些内容 1、学java最重要的是下面四个内容:掌握Java语言的使用:语言语法、程序逻辑,OOP(面向对象)思想,封装、继承、多态,集合框架、泛型、File I\O技术,多线程技术、socket网络编程,XML技术。 2、Java基础:了解Java的基本语法、数据类型、控制流程、数组、字符串等基础概念。学习面向对象编程(OOP)的原则和概念…

    2024年5月23日
    4100
  • excel自杀的简单介绍

    excel表格中宏代码,具有自杀功能,密码输入错误3次就自动删除表格_百度… 我给楼主一个建议,利用excel自身的密码保护,保护此工作簿的结构,将sheet提前隐藏。这样如果有人将同一份excel打开时,如果不能输入正确的密码,就不能将sheet取消隐藏,就能达到楼主所说的保护了。 如果你还有源文件的话,可以这样试试:打开其他的excel文件,…

    2024年5月23日
    8100

发表回复

登录后才能评论



关注微信