我将有一个像
('abc' != 'xyz' AND 'thy' = 'thy') OR ('ujy' = 'ujy')
该字符串将能够具有所需的任意多个“ AND”组。AND组内将没有任何嵌套组。所有组将始终由OR分隔。
我可以只切换AND &&
和AND ||
。
我想要将此字符串传递到某种类型的eval方法中,并输出TRUE或FALSE。
有什么可以做到的吗?
您可以使用JDK1.6随附的内置Javascript引擎来评估包含数学表达式的字符串。
您可以在这里查找:ScriptEngine
这里是一个例子:
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;
import javax.script.ScriptException;
public class Myclass {
public static void main(String[] args) {
try {
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine se = sem.getEngineByName("JavaScript");
String myExpression = "('abc' == 'xyz' && 'thy' == 'thy') || ('ujy' == 'ujy')";
System.out.println(se.eval(myExpression));
} catch (ScriptException e) {
System.out.println("Invalid Expression");
e.printStackTrace();
}
}
}
只要记住要替换以下内容:
“&”和“ &&”,
“ OR”和“ ||”,
“ =”必须为“ ==”
否则它将不接受您的表情,并会引发 javax.script.ScriptException
我正在尝试这个代码编写练习,我太迷路了! 它甚至不编译,但即使它编译了,我肯定它也不会工作。
问题内容: 我如何布尔计算包含布尔表达式的字符串?喜欢: 用户应该能够定义自己的变量(),并定义自己的布尔表达式()。因此,我将所有表达式仅作为字符串使用。我如何评估它们? 问题答案: 您可以使用Nambari评论的ScriptEngine: 打印0。 还要注意,该表达式不是布尔表达式,而是按位运算。
如何完成名为c的方法,该方法将两个和一个作为输入。如果布尔值为true,则此方法将比较前两个字符串,忽略大小写因素(大写/小写)。如果两个字符串的长度相同,则将它们视为相等的忽略大小写,并且两个字符串中的对应字符的大小写相同。 如果布尔值为false,则此方法应比较两个字符串,如果第一个字符串表示与第二个字符串相同的字符序列,则返回true,否则返回false。 注意:应该返回false 我试图使
问题内容: 我做了几个布尔比较: 听起来像布尔值,并且可以互换。 有时候使用起来更清晰 我想知道: 是和python中预分配? 是始终返回相同的(或者与预先分配)(或)? 它是安全的替代与比较布尔值? 这与最佳实践无关。 我只想知道真相。 问题答案: 您可能永远不需要比较布尔值。如果您正在执行以下操作: …只需将其更改为: 没有或需要。 正如评论者所指出的,有比较布尔值的正当理由。如果两个布尔值都
问题内容: 字符串部分是: 但是当我与: 以上结果为假, 我很困惑,所以有人可以告诉我为什么吗? 问题答案: 该==运营商比较对象引用,在不值秒。 要比较 的值,请使用以下方法: Java中的任何其他对象都是如此-比较值时,请始终使用equals方法而不是使用==运算符。 该方法是的一部分,并且应被将以一种或另一种方式进行比较的类覆盖。
问题内容: 我尝试了以下操作,但是Eclipse为此抛出了一个错误。 检查字符是否正确的正确方法是什么? 问题答案: 检查 没有做任何字符检查之前。返回的字符是原始类型,绝不会是: 如果您尝试一次处理一个字符,则可以使用: (与不同,终结符检查不是在Java中完成的。)