假设一个字符串包含表达式1< 3 ...如何在if语句中评估该表达式?
import java.io.*;
public class EvaluateExpression
{
public static void main(String[]args)throws IOException
{
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader in = new BufferedReader(isr);
String expression;
System.out.print("Enter the expression to evaluate: ");
expression = in.readLine();
if (expression){
System.out.print("The expression " + expression + " is true.");
}else{
System.out.print("The expression " + expression + " is not true.");
}
}
}
需要布尔值但找到String。有没有办法评估字符串,所以它返回一个布尔值?
if (1<3) {...}
可以工作但if (expression) {...}
,其中String变量表达式为1 <3不起作用。将它转换为布尔值也不起作用。
谢谢!
答案 0 :(得分:0)
您可以使用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.");
}
答案 1 :(得分:0)
您可以使用&gt;,&lt;,&gt; =,&lt; =,==,!=作为分隔符拆分字符串。从split函数检查返回数组中的2个字符串,并将它们转换为int。
然后在函数中使用类似的东西
if (youroperator.equals("<"))
return first_number < second_number
elseif (youroperator.equals(">"))
return first_number>second_number
...
您的运算符可以从string.contains()函数
获得答案 2 :(得分:0)
如果您需要通用解决方案,可以使用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”引擎。使用您环境中可用的任何引擎。
答案 3 :(得分:0)
尝试...
if(expression.equals("1<3"))
{}
else
{}
“if”将boolean作为参数,你不能在其中传递一个字符串。所以有等于方法 java.lang.String ,它检查两个字符串是否相等,其返回类型是布尔值(true或false)。