0

我陷入了一个问题。我有以下方法:

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 ;  
}

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

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

请指教。

4

2 回答 2

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 既是 anint并且可能在 128-255 范围内,请尝试:

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

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

于 2012-04-23T10:58:44.087 回答
0

如果您使用的是字节值,则不能使用 not logic 'and'&&或 'or' ||。如果要使用按位“和”或“或”运算符,则需要分别使用&|

于 2012-04-23T11:40:23.920 回答