我遇到了问题。我有以下方法:
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)) ,
请告知。
答案 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)
如果您使用的是字节值,则不能使用逻辑'和'&&
或'或'||
。如果您想使用按位'和'或'或'运算符,则需要分别使用&
和|
。