Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在if语句中对字符串中的表达式求值_Java - Fatal编程技术网

Java 在if语句中对字符串中的表达式求值

Java 在if语句中对字符串中的表达式求值,java,Java,假设一个字符串包含表达式1,您可以使用JDK1.6 例如: ScriptEngineManager sem = new ScriptEngineManager(); ScriptEngine se = sem.getEngineByName("JavaScript"); InputStreamReader isr = new InputStreamReader(System.in); BufferedReader in = new BufferedReader(isr); Strin

假设一个字符串包含表达式1,您可以使用JDK1.6

例如:

 ScriptEngineManager sem = new ScriptEngineManager();
 ScriptEngine se = sem.getEngineByName("JavaScript");

 InputStreamReader isr = new InputStreamReader(System.in);
 BufferedReader in = new BufferedReader(isr);
 String expression;

  System.out.print("Enter the expression to evaluate: ");
  expression = in.readLine();
  String result = se.eval(expression).toString();
  if (result.equals("true")) {
      System.out.print("The expression " + expression + " is true.");
  } else {
       System.out.print("The expression " + expression + " is not true.");
  }

您可以使用>、=、分割字符串。如果您想要一个通用的解决方案,您可以使用JVM中内置的脚本引擎

import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
...
...
String expression = "1<3";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jsEngine = manager.getEngineByName("JavaScript"); //BE CAREFUL about the engine name. 
Object result = jsEngine.eval(expression); //Returns a java.lang.Boolean for the expression "1<3"
注意:虽然JavaScript引擎名在我的环境中工作,但在您的环境中它可能不可用,或者可能被其他名称(如js或JavaScript)调用。在某些环境中,还可以使用其他引擎,如Groovy引擎。使用您环境中可用的任何引擎。

尝试

if(expression.equals("1<3"))
{}
else
{}

如果将布尔值作为参数,则无法在其中传递字符串。因此有equals方法java.lang.string,用于检查两个字符串是否相等,其返回类型是否为booleantrue。

类似问题:使用您的建议获得正确的结果。。。非常感谢!很高兴我能帮上忙,伙计。
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
...
...
String expression = "1<3";
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine jsEngine = manager.getEngineByName("JavaScript"); //BE CAREFUL about the engine name. 
Object result = jsEngine.eval(expression); //Returns a java.lang.Boolean for the expression "1<3"
if(expression.equals("1<3"))
{}
else
{}