java中怎么将字符串(带运算符号加减乘除)转换成代数算式运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中怎么将字符串(带运算符号加减乘除)转换成代数算式运算相关的知识,希望对你有一定的参考价值。

我在做一个计算器,文本框中可以输出字符串,例如:“12+3.6*9”
怎么将这个字符串直接转换成算术式 12+3.6*9 运算输出结果?

这需要写很长一段代码。
1、判断表达式中有没有括号,如果有括号,转第二步。没有括号转第三步。
2、把括号内的内容提取出来,作为一个新的表达式。转第三步
3、判断表达式中有没有乘号和除号,有转第四步。没有转第六步。
4、把乘除号和乘除号前后的数字提取出来,得到新的表达式,转第五步。
5、提取数字和符号,判断表达式是乘号还是除号,然后计算结果。返回。
6、表达式没有乘除号,有加减号。转第七步。
7、提取包含加减的表达式中的符号和数据,计算结果,返回。

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

如果你只是想要结果的话可以利用数据库来进行计算

进行计算之前,运算符要记得替换,例如x换成*,同理可校验字符串是否是合法运算式

参考技术B java是无法直接解决,不要试图在这方面想了,但是javascript中有一个eval函数是可以执行的,所以,可以通过其他途径执行javaScript就可以做到,而ScriptEngine是java的一个javaScript实现类 ,可以完成操作,稍有难度! 参考技术C public static void main(String[] args)
ScriptEngine se = new ScriptEngineManager().getEngineByName("JavaScript");
String str = "2*3-45/5+9+9%5";
try
Double d = (Double) se.eval(str);
System.out.println(d);
catch (ScriptException e)
e.printStackTrace();

本回答被提问者采纳
参考技术D 当str里面的算式计算出来是整数的时候,编译器会报错,不能从Integer类型转换到Double类型。最好把d改成String类型,然后把(Double)se.eval(str)改成se.eval(str).toString。这样就不会有任何类似的问题了。

C语言中怎么将字符123转化成数字123

简单点的,只用加减乘除法转化。。
要求随意输入3个数字,就会出现相同的三个数字
这个思路
#include<stdio.h>
main()
char a,b,c;
int d;
printf("Please input three number:");
scanf("%c%c%c",&a,&b&c);
a=a-
b=b-
c=c-
d=a*100+b*10+c
printf("%d",d);

C语言中可以调用atoi()函数将字符串数字转换成整型数,所需要头文件为stdlib.h

函数原型:int atoi( char *s) ;

函数说明:将字符串s转换为整型值,返回给调用者。

参考代码:

相关函数还有:

atof():将字符串转换为双精度浮点型值。
atol():将字符串转换为长整型值。
strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。

参考技术A atof():将字符串转换为双精度浮点型值。
atoi():将字符串转换为整型值。
atol():将字符串转换为长整型值。
strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字。
strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字。
strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。来自:求助得到的回答
参考技术A 这里有一个函数可以直接用:
例如: char str[10] = "123";
int dd = atoi(str);
printf("%d\n",dd);//123本回答被提问者和网友采纳
参考技术B 强制转化

以上是关于java中怎么将字符串(带运算符号加减乘除)转换成代数算式运算的主要内容,如果未能解决你的问题,请参考以下文章

类型转换

java中如何实现字符与数字加减运算

c语言的运算符号数组替代

二进制用补码做加减法怎么实现,举个例子??

JS重点之运算符以及运算符优先级

数值怎么转换成数字