2012-04-23 4 views
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)) , 

を使用して比較することはできませんので、ご連絡ください示すdeterminecardtypeはエラーを示しているよう。

+0

このエラーは?大文字の定数の種類は何ですか? – UmNyobe

+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は128〜255でint、多分両方であると仮定し、試してみてください。

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

たぶんエラーは(他の場所に)ある。

+0

私は試しましたが、動作していません.. !! – dghtr

0

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

関連する問題