我想知道,如果是不可能性重新寫一個if
這樣在出頭IF條件與OR值
int var = 0;
if (var == 1 || var == 2)
{
//...
}
這樣
int var = 0;
if (var == (1 || 2))
{
//...
}
或相似。謝謝
我想知道,如果是不可能性重新寫一個if
這樣在出頭IF條件與OR值
int var = 0;
if (var == 1 || var == 2)
{
//...
}
這樣
int var = 0;
if (var == (1 || 2))
{
//...
}
或相似。謝謝
條件-或操作中的每個操作數必須是布爾類型或布爾值,或編譯時發生錯誤。
所以沒有,沒有更好(也更快)的方式來編碼您的條件。 (相同的規則適用於條件和運算符)
在java中沒有這樣的語法if
。
如果你在if
條件的大組值,你可以使用switch
代替:
int var = ...;
switch(var) {
case 1:
case 2:
// ...
break;
default:
//else case
break;
}
編輯:
與Java 8,你也可以寫:
int var = ...;
if (IntStream.of(1, 2, 3, 4).anyMatch(i -> var == i)) {
//...
}
||代表或運營商,所以它需要在它的兩邊都有條件,所以這是不正確的 ,因爲你在||的兩邊都加整數。操作者
不,這在Java中是不可能的。你所要求的是類似於sql IN
操作符。
if(var == (1 || 2))
可以很容易地被翻譯成if(var IN [1,2])
,但Java並不支持。
由於靠近你可以得到是使用一個集合:
if(Arrays.asList(1,2).contains(var)){
或String
if("1_OR_2".contains(String.valueOf(var))
另外一個辦法可以建立像
功能public static final boolean in(final int var, final int... vals) {
for (int val : vals) {
if (var == val) {
return true;
}
}
return false;
}
然後,你會打電話給:if(in(var,1,2)){
。
或者你可以構建一個包裝爲Integer
,並添加in
方法存在,因此該方法調用可能聽起來更自然(if value x in [val1,val2 ... valN]
)
public final class Int {
private final Integer val;
public Int(final int val) {// avoid passing nulls
this.val = val;
}
public boolean in(final int... vals) {
for (int val : vals) {
if (this.val.equals(val)) {
return true;
}
}
return false;
}
public static void main(final String[] args) {
System.out.println(new Int(1).in(1, 2, 3));
}
}
'Arrays.asList(new int [] {1,2})'將返回一個'List
你可以只對布爾值 – sidgate 2014-09-05 13:26:14
的條件運算符用C條件一樣(1 || 2)總是爲真 – bartl 2014-09-05 13:27:29