2012-04-23 3 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 ; 
} 

Но в приведенном выше коде, как показано на determinecardtype показывает ошибку, поскольку это возвратного типа байт, и я не могу сравнить с использованием

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

Пожалуйста посоветуйте.

+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 является одновременно int и может быть в диапазоне 128-255, попробуйте:

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

Вряд ли все же. Возможно, ошибка кроется (в другом месте).

+0

Я пробовал, но его не работает .. !! – dghtr

0

Если вы используете байтовые значения, вы не можете использовать не логику 'и' && или 'или' ||. Если вы хотите использовать побитовые операторы «и» или «или», вам необходимо использовать & и | соответственно.

Смежные вопросы