我有一个int变量来保存选项,可能包括none,一个或多个子选项,如下所示:
public static final int OPERATOR_PLUS = 1;
public static final int OPERATOR_SUBTRACT = 2;
public static final int OPERATOR_MULTIPLY = 4;
public static final int OPERATOR_DIVIDE = 8;
我需要一个函数,如果该变量包含子选项,它将返回。我试过了:
return (Operator & Operators);
return (Operator && Operators);
但是Eclipse说它们都是语法错误(运算符和运算符都是int)。请告诉我如何在Java中使用AND位运算符。在.NET中,我使用:Operator And Operators
。
感谢。
答案 0 :(得分:5)
Java不会将int
视为boolean
(与C ++,AFAIU不同)。尝试
return (Operator & Operators) > 0;
答案 1 :(得分:2)
您的方法的返回类型是什么?如果是boolean
,那么你应该这样写:
public boolean hasOperatorBit() {
return (Operator & Operators) != 0;
}
答案 2 :(得分:0)
第一个是按位 AND运算符,并且应该是有效的语法,只要方法的返回类型是int
或类似的东西。如果你想要一个布尔返回类型,你需要做一些像return (operator & operators) != 0;
。
第二个无效;它是一个逻辑 AND运算符,因此它的两个参数都必须是boolean
。
答案 3 :(得分:0)
您需要使用按位AND将您的变量与相关运算符进行比较,以查看它是否与运算符等效。
例如,
返回OPERATOR_PLUS&运营商== OPERATOR_PLUS;
因为如果你考虑按位如何工作,你想说我的变量是否包含运算符的位标志。
答案 4 :(得分:0)
第一行检查是正确的,而您一次只能检查一个操作员的可能性。此外,您必须检查结果是否不等于0才能正确。
return ((operator & sub_operator) != 0);
答案 5 :(得分:0)
public boolean checkOperator(int operators, int operator) {
return (operators & operator) != 0;
}
Tutorials以便更好地理解。