package rules; dialect "mvel" import model.PI; global model.PI piObject; rule "CalcPI" no-loop false when pi: PI( )from piObject eval(pi.getIterValue() % 5 == 0) // 每五次循环触发规则 then System.out.println("执行规则中 ... "); System.out.println("PI的值: " + pi.getPi() + " 迭代值: " + pi.getIterValue()); pi.iterOne(); update(pi); // 询问用户是否继续循环 java.util.Scanner input = new java.util.Scanner(System.in); System.out.print("是否继续循环?(Y/N)"); String choice = input.nextLine(); if (choice.equalsIgnoreCase("N")) { pi.setIterValue(100); // 结束循环 piObject = null; // 可以选择将全局变量置为 null } end如何改成输出不为null的
时间: 2024-01-24 15:05:05 浏览: 126
thymeleaf-layout-dialect-1.3.1.jar
可以在规则的 when 部分添加一个条件,判断 piObject 不为 null 时才触发规则,如下所示:
```
rule "CalcPI"
no-loop false
when
pi: PI( ) from piObject
eval(piObject != null, pi.getIterValue() % 5 == 0) // 每五次循环触发规则,并且 piObject 不为 null
then
System.out.println("执行规则中 ... ");
System.out.println("PI的值: " + pi.getPi() + " 迭代值: " + pi.getIterValue());
pi.iterOne();
update(pi);
// 询问用户是否继续循环
java.util.Scanner input = new java.util.Scanner(System.in);
System.out.print("是否继续循环?(Y/N)");
String choice = input.nextLine();
if (choice.equalsIgnoreCase("N")) {
pi.setIterValue(100); // 结束循环
piObject = null; // 可以选择将全局变量置为 null
}
end
```
这样,当 piObject 为 null 时,规则就不会触发了。
阅读全文