-6

我有四个字符串 falgs 将这些值作为字符串 a[] 获取。

falg1 = Y or N

falg2=  Y or N

falg3=  Y or N 

falg4=  Y or N

基于上述问题,我正在检查以下情况。这是正确的做法还是您有更好的方法?

if (falg1.equals("Y")) {

    if (falg2.equals("Y")) {

        if (falg3.equals("Y") && falg4.equals("Y")) {
            condition = true;

        } else

            condition = flase;
    } else
        return null;
} else
    return null;
4

4 回答 4

1

=是赋值而不是相等。您无法检查 String 是否相等,==因为它是一个对象,您必须使用string1.equals(string2).

char如果您想继续使用“Y”或“N”,则可以使用标志来==检查chars 之间的相等性。

但是,只使用booleanflag1、flag2、flag3 和 flag4 会更容易。这样你就可以这样做:

boolean flag1, flag2, flag3, flag4;

// set all flags to whatever values

if (flag1 && flag2)
{
    if (flag3 && flag4)
       condition = true;
    else
       condition = false;
}
else
{
    return null;
}
于 2013-09-12T16:56:25.453 回答
0
  1. 您需要使用equals()Java 中的比较字符串值。

  2. 要优化布尔表达式,请使用表。将所有可能的值和预期的结果放入其中:

    flag1 flag2 flag3 flag4  |  result
    ----------------------------------
      N     N     N     N    | null
      Y     N     N     N    | null
      N     Y     N     N    | null
      Y     Y     N     N    | null
      N     N     Y     N    | null
    ...
    

              Y Y Y Y | 真的

    当你这样做时,你经常会看到一个模式出现,它可以帮助你优化代码。见真值表

  3. 您的代码中有很多错别字;你真的应该修复它们。

于 2013-09-12T17:01:45.187 回答
0
 if (!falg1.equals("Y") || !falg2.equals("Y"))
     return null;

 return falg3.equals("Y") && falg4.equals("Y");

这是假设没有任何值可以为空。你可以通过这样做来解决这个问题"Y".equals(falg1)

于 2013-09-12T16:54:09.977 回答
0

出色地...

我假设有几件事。

  • falg = 标志。
  • 标志可以是布尔值。

这是我的方法。

Boolean flag[4];

//initialize flags somehow. 

if(flag[1] && flag[2]){
    if(flag[3] && flag[4])
        condition = true;
    else
        condition = false;
}else{ 
     return null;
}
于 2013-09-12T17:02:47.450 回答