我想用Java做一个条件评估器,它的工作原理如下。
class ConditionEvaluator{
String condition;
ConditionEvaluator(String condition){
this.condition = condition;
}
boolean isTrue(){
/*
* Code here
*/
}
}
public static void main(String[] args){
ConditionEvaluator c1 = new ConditionEvaluator("1==1");
ConditionEvaluator c2 = new ConditionEvaluator(" \"hi\".equals(\"hi\") ");
ConditionEvaluator c3 = new ConditionEvaluator("3==4");
System.out.print(c1.isTrue(),c2.isTrue(),c3.isTrue());
}
输出应该是:
true true false
好吧,我希望你在教学中需要它,而不是在生产环境中使用它(如果你这样做,我建议你学习使用StackDeque数据结构解析字符串)。最粗略的方法是如何达到你的目的。
public class ConditionEvaluator {
private String expression;
public ConditionEvaluator(String expression) {
this.expression = expression;
}
public boolean isTrue() throws Exception {
if (expression.contains("==")) {
return parseTwoEquals();
} else if (expression.contains(".equals")) {
return parseEquals();
} else throw new Exception();
}
private boolean parseTwoEquals() throws Exception {
String[] args = expression.split("==");
if (args.length == 2) {
return args[0].trim().equals(args[1].trim());
} else throw new Exception();
}
private boolean parseEquals() throws Exception {
String s = expression.replace("\"", "").replace("(", "").replace(")","");
String[] split = s.split(".equals");
if (split.length == 2) {
return split[0].trim().equals(split[1].trim());
} else throw new Exception();
}
}
我相信你可以自己创造异常的类型.