关于字节条件

时间:2012-04-23 10:52:06

标签: java

我遇到了问题。我有以下方法:

public byte determineCardType(final IInput inputData) {
    byte cardType = UNKNOWN_CARD;
    try {
      if (isWagRewardsLoyaltyCard(inputData))
        cardType = WAG_LOYALTY_CARD_TYPE;
      else if (isDRCard(inputData))   //checking that card scanned and swiped is a DR Card
        cardType = DR_CARD_TYPE;      
           else if (isWagRewardsPartnerCard(inputData))
        cardType = AARP_CARD_TYPE;
      return cardType;
    } catch (Exception e) {
      return UNKNOWN_CARD;
    }
  }
}

然后,我有另一段代码,我正在检查从上述方法返回的卡片类型。

if((aarpCardSupport.isAARPCard(input))||(determineCardType(input)==DR_CARD_TYPE))  
        {
        return true;
        }else if((isDRCard(input))&&(isDRLoayltyEnabled())) //would return 1 for DR card only when isDRLoayltyEnabled returns true 
        {
          return true;
        }       
        return false ;  
}

但是在上面显示的代码中,confirmcardtype显示错误,因为它的返回类型是字节,我无法使用

进行比较
if((aarpCardSupport.isAARPCard(input))||(determineCardType(input)==DR_CARD_TYPE))  , 

请告知。

2 个答案:

答案 0 :(得分:0)

if (aarpCardSupport.isAARPCard(input)
    || determineCardType(input) == (byte)DR_CARD_TYPE)  

或者

public static final byte DR_CARD_TYPE = (byte) -2;
// Byte is signed, hence 254 = 256 - 2.

第二次尝试:

假设DR_CARD_TYPE都是int,可能在128-255范围内,请尝试:

if (aarpCardSupport.isAARPCard(input)
    || ((int)determineCardType(input)) & 0xFF == DR_CARD_TYPE & 0xFF)  

不太可能。也许错误在于(其他地方)。

答案 1 :(得分:0)

如果您使用的是字节值,则不能使用逻辑'和'&&或'或'||。如果您想使用按位'和'或'或'运算符,则需要分别使用&|