使用Java以OO方式表示逻辑操作

时间:2011-06-24 15:26:00

标签: java csv macros boolean-logic oop

我的java程序将允许基于用户定义的逻辑操作过滤csv文件的内容。将从两列csv文件的内容中读取数据

left    right
5       10
2       6

用户将在左右引用的命令行上提供逻辑条件操作。程序应根据逻辑操作的结果过滤到csv文件的内容。

IF ((left < right) AND (left !=10)) THEN 5 ELSE right 

我计划将操作类型表示为枚举

enum Operation
    >,
    <,
    ==,
    !=

 public boolean evaluate(int left,int right);

将支持评估方法。该操作的具体逻辑将在特定的枚举类型中实现。

Condition接口支持访问左操作数,操作和右操作数的方法

interface Condition
{
    public int getLeft();
    public Operation();
    public int getRight();
}

对于AND情况,我只维护一个条件列表并迭代列表以确保所有条件都为真。但是如何显示我代表IF THEN ELSE关键词?

2 个答案:

答案 0 :(得分:0)

遵循您的界面约定:

interface Conditional {
    public Condition Condition();
    public int TrueValue();
    public int FalseValue();
}

我会使用类而不是引用整数,我也会引用Expression类。

答案 1 :(得分:0)

如何使用Velocity这样的方法而不是采用这种方法?您基本上读取数组中left中的所有数字以及right中不同数组中的所有数字,并将这些数组传递给Velocity上下文然后让用户键入Velocity样式(如果有条件的话)让Velocity照顾其余的?