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

时间:2017-07-20 17:03:30

标签: 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有效且字段B2为空时,B2我给B2分配一个值(例如B2 = B1 ++) 6)如果所有字段都有效,我会根据所有字段应用操作

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

} else {

} 

2 个答案:

答案 0 :(得分:1)

类似的东西?

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()
}

答案 1 :(得分:1)

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

但是,只是为了说明,它看起来像:

// 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)
}