2011-05-20 43 views
1

我有一個int變量保存選項,可以不包括,一個或多個子選項是這樣的:Java中2位運算符的強大功能?

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

謝謝。

+1

是的,這是因爲返回類型(布爾)的。我不知道&運算符返回一個int值類型。謝謝所有:)!快樂的編碼! – 2011-05-20 13:25:56

回答

2

什麼是你的方法的返回類型?如果是boolean,那麼你應該把它寫這樣的:

public boolean hasOperatorBit() { 
    return (Operator & Operators) != 0; 
} 
0

第一個是按位 AND運算符,並且應該是有效的語法,只要您的方法的返回類型是int或類似的東西。如果你想有一個布爾返回類型,你需要做的是這樣return (operator & operators) != 0;

第二個是無效;這是一個邏輯 AND運算,所以無論其參數必須boolean

5

Java不會將int視爲boolean(與C++,AFAIU不同)。嘗試

return (Operator & Operators) > 0; 
0

您需要使用按位與運算符比較變量與所討論的運算符是否等價於運算符。

例如,

返回OPERATOR_PLUS &運算符== OPERATOR_PLUS;

因爲如果你想想如何按位的作品,你想說的話沒有我的變量包含位標記的運營商。

0

第一行是正確的檢查,而你只能查詢一次一個操作可能性。此外,您必須檢查結果是否不等於0纔是正確的。

return ((operator & sub_operator) != 0); 
0
public boolean checkOperator(int operators, int operator) { 
return (operators & operator) != 0; 
} 

Tutorials爲了更好的理解。