Java 在if语句中对字符串中的表达式求值
假设一个字符串包含表达式1,您可以使用JDK1.6 例如: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
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
{}