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

しかし、上記のコードでは、戻り値の型がバイトであり、使用して比較できないため、determincardtype がエラーを表示しています。

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

お知らせ下さい。

4

2 に答える 2

0

&&バイト値を使用している場合は、notlogic'and'または'or'を使用することはできません||&ビット単位の'および'または'または'または'演算子を使用する場合は、それぞれおよびを使用する必要があり|ます。

于 2012-04-23T11:40:23.920 に答える
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.

2回目の試行:

DR_CARD_TYPEが両方でありint、おそらく128〜255の範囲にあると仮定して、次のことを試してください。

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

しかし、ありそうもない。たぶんエラーは(他の場所に)あります。

于 2012-04-23T10:58:44.087 に答える