Java 将这些口头规则转化为条件

Java 将这些口头规则转化为条件,java,if-statement,Java,If Statement,我对来自4个html字段的数据应用了某些条件,这些字段分为两类:类别A(字段A1和A2)和类别B(字段B1和B2) N.B:我对如何以优雅的方式实现这一点感到困惑 规则: 1) 当这4个字段为空时,我返回一条消息,说明字段为空 2) 当字段A1、A2有效且B1、B2为空时,我将根据类别A应用操作 3) 规则例外(2):当字段A1有效且字段A2为空时,A2为A2赋值(例如A2=A1++) 4) 当字段B1、B2有效且A1、A2为空时,我将根据类别B应用操作 5) 规则(4)的例外情况:当字段B1有

我对来自4个html字段的数据应用了某些条件,这些字段分为两类:类别A(字段A1和A2)和类别B(字段B1和B2)

N.B:我对如何以优雅的方式实现这一点感到困惑

规则:

1) 当这4个字段为空时,我返回一条消息,说明字段为空

2) 当字段A1、A2有效且B1、B2为空时,我将根据类别A应用操作

3) 规则例外(2):当字段A1有效且字段A2为空时,A2为A2赋值(例如A2=A1++)

4) 当字段B1、B2有效且A1、A2为空时,我将根据类别B应用操作

5) 规则(4)的例外情况:当字段B1有效且字段B2为空时,B2 I为B2赋值(例如B2=B1++)    6) 如果所有字段都有效,我将根据所有字段应用操作

if ( A1 == '' && A2 == '' && B1 == '' && B2 == '' ) {
    System.out.println("empty fields");    
}else if () {

} else {

} 

类似的东西

if( A1 == "" && A2 == "" && A3 == "" && A4 == "")
    System.out.println("empty fields")
else if(A1.IsValid() && A2.IsValid() && B1.IsValid() && B2.IsValid()
    DoSomethingElseAB();
else if( A1.IsValid() )
{
    if(A2 == "")
        A2 = A1++;
    else if ( B1 == "" & B2 == "")
        DoSomethingElseA();

    if( A2.IsValid() && B2 == "" )
        B2 = B1++;
    else if ( B1.IsValid() && B2.IsValid() && A1 == "" && A2 == "")
        DoSomethingElseB()
}

您可以利用二者的威力为任何字段输入集生成唯一的组合。您甚至可以(应该)隐藏枚举中的值。这将很容易让您处理任何可能的输入集

然而,为了举例说明,它看起来像:

// assign values to rules to each and accumulate:
static final int ALL_EMPTY = 0;
static final int RULE_3 = 1;
// ....rest of the rules
static final int RULE_4 = 12;    // this is 0 + 0 + 4 + 8
int settings = 0;
if (A1.isValid()) {
    settings += 1;
}
if (A2.isValid()) {
    settings += 2;
}
if (B1.isValid()) {
    settings += 4;
}
if (B2.isValid()) {
    settings += 8;
}
switch (settings) {
case ALL_EMPTY:
    // output message
    break;
case RULE_3:
    // do rule 3
    break;
// etc, etc (for each rule you need)
}

我在规则5中犯了一个错误,B类不取决于一个好主意,我将尝试将它与@Adam示例结合起来,并为我找到最好的方法。