java字符串转运算符

作者&投稿:钱泥 (若有异议请与网页底部的电邮联系)
java 怎么把运算符字符串转化为字符?比如"1+2".有办法把字符串”+“变成运算符+的方法吗?~

1、字符串“+”不能直接转化成运算符+进行操作,但可以换一个思路,只需要判断出来字符串中的+,然后把以它截取字符串,两端的内容应该就是需要进行做+运算的内容了,如“123+456”这个字符串,进行split截取,自己去运算就达到了同样的运算效果。
2、代码如下
public static void main(String args[]){String str="123+456";//定义一个随意的包含运算式的字符串String a[]= str.split("\\+");//+是特殊字符,需要用\\转义,split返回string数组System.out.println("截取结果:"+a[0]+"+"+a[1]);int sum=Integer.parseInt(a[0])+Integer.parseInt(a[1]);System.out.println("运算结果:"+sum);}3、运行效果

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

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

楼主想要的,不就是js里的eval么……非要弄得这么复杂。
首先下载:http://www.beanshell.org/bsh-core-2.0b4.jar
在你类里写:
String s="3>2";// 这里你可以自己拼一下字符串

Interpreter bs=new Interpreter();
try {
System.out.println(bs.eval(s));
} catch (EvalError e) {
e.printStackTrace();
}

这样就可以,字符串可以为更复杂的运算,不单单是逻辑运算

想法挺有意思的,让我对楼主一下很好奇,不知道楼主是刚接触java还不太懂,还是已经是老鸟了,研究点稀奇古怪的东西。

首先在java中实现这样的功能也只能自己手写去转,比如:
if(str=="+")
result=int1+int2;
if(str=="-")
result=int1-int2;
。。。。。

如果楼主想直接计算出一个表达式的值可以调用javascript中的eval方法(1.6支持)
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
class Test {
public static void main(String[] args) throws Exception {
ScriptEngine jse = new ScriptEngineManager().getEngineByName("JavaScript");
boolean b= (boolean)jse.eval("3>2");
System.out.println(b);
}
}

个人感觉如果但说从字符串转运算符的话,属于编译原理中的词法解析范畴。
如果楼主学过编译原理,那么可以通过以下几步实现:
1.写出各个单词的正规式(正则表达式);
2.根据正规式构造NFA(不确定的有限自动机);
3.将NFA转换DFA(确定的有限自动机);
4.根据DFA就可以实现词法分析器,写出程序。

public class TestMain {
public static void main(String[] args) {
String tmp = compareString("3s2");
System.out.println(tmp);
}

private static String compareString(String str){
final String s = "s"; // s

if(str.contains(s)){
String[] arr = str.split(s);
if(Integer.parseInt(arr[0]) > Integer.parseInt(arr[1])){
return "True";
}
}

return null;
}
}

3s2 是什么
你说的是在控制台打出">"吗?
直接打System.out.print(s)就可以了

System.out.print(3+s+2);
打印出来是:“3>2”


求问Java中可以字符串可以用逻辑运算吗?
s3=s1&&s2是不行的,因为只有boolean类型才能进行逻辑运算。A应该是A、s3=sl+s2吧?如果是,答案是A。+用于字符串的连接,s3=sl+s2后s3变成了字符串"hduonline"。

java 字符串"a+b\/(b*d)" 怎么获取a,b,c,d的值 然后按照这个计算公式计 ...
题目表达不清晰。一楼的答案有多准确???abcd只能是个位数??假设abcd分别是1,11,111,1111呢??=== 用正则表达式获取4个整数,然后计算 public int calc(String str){ Pattern ppp=Pattern.compile("\\\\d");Matcher mmm=ppp.matcher(str);int[] aa=new int[4];for(int i=0;mmm.find(...

java 只接受字符串输入 怎么将字符串转化为int 并判断输入的数值大于...
nextLine().replaceAll(regex, src);i = Integer.valueOf(str);} System.out.println("OK..");} } 这个思路,你可以随便输入,全部都当字符串处理,用的是字符串替换方法,把非数字的字符,不管你输入的啥,只要不是数字都飞掉!然后把保留下来的数字字符串,转成int即可,简单风趣有情调.....

Java干货 | Java数组和字符串的相互转换
注意事项转换时,要根据需求选择恰当的方法。例如,字符串转数组时,要明确分隔符。同时,考虑使用数据库连接池优化性能。总结与启示数组和字符串在Java中既独立又紧密相连。理解它们的特性和转换技巧,能帮助你更好地应对各种编程挑战。通过本文,期待你对Java中的数组和字符串有更深的领悟,实践出更多的...

java大神 字符串的转换基本数据类型
1. 字符串转换为数字 java.lang中的Integer类调用其类方法public static int parseInt(String s)可以将由“数字”字符组成的字符串,比如“876”转换为int数据类型,例如:int x;String s = "876";x = Integer.parseInt(s);类似地,使用java.lang包中的Byte、Short、Long、Float、Double类调用相应...

求字符串解析四则运算的Java代码
package samples;\/ author sghitxia \/ public class C { public static void main(String[] args) { String str = "(1+{1+2+3+[2+(4+5)+(9+3*7*6)]}+2+{3*5+[2+(4+5)+(9+3)]}+2)";System.out.println(cacComplex(str));} private static double cacComplex(String str...

java 字符串string转double的精度问题
BigDecimal(String)创建一个具有参数所指定以字符串表示的数值的对象。这个类可以。

java中的字符串相加
这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,s3先被放到了池中,所以在s5被创建的时候,程序找到了具有相同值的 s3,将s5引用s3所引用的对象"ab"。所以比较s5==s3由于两个是指向同一个对象,所以为true。但是在这些赋值中,涉及到变量运算,所以得到的字符串对象...

Java表达式:“a”+20的计算结果是?
`20` 会被自动转换为字符串类型。需要注意的是,在 Java 中,使用 `+` 运算符连接字符串时,会创建一个新的字符串对象,因此频繁地使用 `+` 运算符可能会导致内存占用增加和性能下降。如果需要在多个字符串之间进行大量连接操作,可以考虑使用 `StringBuilder` 或 `StringBuffer` 类来提高效率。

java中如何将一个无限大的字符串转化为整型
既然是将一个无限大的字符串转变成一个整型,那么这个字符串肯定是由数字组成的字符串。在Java中如果一个数字大到不能再大的时候就可以考虑使用大数操作了。在java.math包中有一个BigInteger类,此类的作用便是将非常大的数字进行大数操作。具体方法是:首先要导入java.math包,方法为import java.math....

临邑县15866043124: java 怎么把运算符字符串转化为字符?比如"1+2".有办法把字符串”+“变成运算符+的方法吗? -
郝炕乳腺: 1、字符串“+”不能直接转化成运算符+进行操作,但可以换一个思路,只需要判断出来字符串中的+,然后把以它截取字符串,两端的内容应该就是需要进行做+运算的内容了,如“123+456”这个字符串,进行split截取,自己去运算就达到了...

临邑县15866043124: Java:把字符串转化为运算表达式 -
郝炕乳腺: int []var; int []fun; for(循环读取每个字符){if(字符为*){不操作}else if(char字符的字码为数字){提取数字到var[]}else if( 操作符){提取操作符到fun数组} }提取完后 再按操作符合变量数组的顺序操作

临邑县15866043124: java字符串转运算符
郝炕乳腺: 楼主想要的,不就是js里的eval么……非要弄得这么复杂.首先下载:http://www.beanshell.org/bsh-core-2.0b4.jar在你类里写:String s="3>2";// 这里你可以自己拼一下字符串Interpreter bs=new Interpreter();try { System.out.println(bs.eval(s));} catch (EvalError e) { e.printStackTrace();}这样就可以,字符串可以为更复杂的运算,不单单是逻辑运算

临邑县15866043124: 想用java实现一个程序,可以把字符串转化为算数表达式. -
郝炕乳腺: 空异常,估计是你operator数组那里使用了还没赋值的值.你要确保你operator使用都是不为null的值,或者先判断一下是否为null在操作,20行那里

临邑县15866043124: 用JAVA实现五种字符串转换成数值类型的方法 -
郝炕乳腺: String str=""; 直接转换:int num=Integer.parseInt("str"); int num1=Integer.valueOf("str"); int num2=Integer.decode(str); int num3=Integer.getInteger("str"); 间接转换:double no=Double.valueOf("str"); int num4=(int)no; double no1=Double.parseDouble("str"); int num5=(int)no; 这里有6种由字符串转换成数值类型的方式,至于怎样把它们转换成方法,你用if多加几个判断就可以了.

临邑县15866043124: java 中字符串能不能直接转换为数学表达式进行计算,不可以要怎么转换,求具体代码.简单点,最好带括号 -
郝炕乳腺: 可是可以,但是特别麻烦.先要把中缀表达式,转换为后缀表达式,再计算后缀表达式. 通常把我们日常中看到的数学表达式称为中缀表达式如:(3+4)*5, 后缀表达式为计算机中容易计算的一种表达式. A*B+C;转换为后缀表达式后为:AB*C...

临邑县15866043124: java中如何将字符串转换为数学公式? -
郝炕乳腺: 计算器是利用堆栈原理,进行计算.你的这个自己写个操作方法吧!<p> </p>

临邑县15866043124: 一个字符串里面包含运算符,如何转成正常运算的运算符 -
郝炕乳腺: 1、一个字符串里面包含运算符,要转成正常运算的运算符,可以用 宏指令.相当于直接执行语句.宏指令在不同语言中执行方式不同的.2、例程://基本的堆栈思想#include<stdio.h>#include<stdlib.h>typedef struct{ int * base; int * top; int size;} ...

临邑县15866043124: java中如何进行字符串和数据类型的转换? -
郝炕乳腺: java总字符串转换成其他基本数据类型的方式,可以使用基本数据类型的toString()方法,还有String类型转换成其他的基本数据类型,示例如下:1 2 3 4 5 6 7 8 9 10 11 12 13Integer I1=newInteger(i1);//生成Integer类 Float F1=newFloat(f1)...

临邑县15866043124: 在java中,怎么对字符串中的字符进行运算操作 -
郝炕乳腺: String 有个特性就是不变的 一个String 在new 出来以后就不能做任何改变了 所以你说那个是不可能的 用tochararray方法转换成char数组 然后修改的方法 或者replace方法修改 实际上修改的并不是修改原来的字符串 而是创建了新的字符串对象

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网