2014-02-11 135 views
0

我想在java中理解這個程序,但是我對這種語言很陌生。java中的含義<= 0?0:1;

你能告訴我什麼

<=0?0:1; 

手段?

這是從下面的代碼是遞減的矩陣(禁忌)的元素

public void decrementTabu(){ 
     for(int i = 0; i<tabuList.length; i++){ 
      for(int j = 0; j<tabuList.length; j++){ 
      tabuList[i][j]-=tabuList[i][j]<=0?0:1; 
     } 
     } 
    } 
+2

這是一個if/then查詢的簡寫形式:(tabuList [i] [j] <= 0)? 0:1。這意味着如果tabuList [i] [j]中的值小於0,則減去0,否則減1。問號以某種方式替代如果並且冒號代替其他。 –

+4

基本上要求作業的幫助,快速瀏覽任何教程或語言書籍將顯示。 – jwenting

+0

這是舊的,但這隻適用於方陣。第二個for循環應該是「for(int j = 0; j

回答

6
tabuList[i][j]-=tabuList[i][j]<=0?0:1; 

可以寫爲:

int tabuListEntry = tabuList[i][j]; 
tabuListEntry -=tabuListEntry <=0?0:1; 

可以寫爲:

int tabuListEntry = tabuList[i][j]; 
tabuListEntry = tabuListEntry - (tabuListEntry <=0?0:1); 

可以寫爲:

int tabuListEntry = tabuList[i][j]; 
int decrementAmount = tabuListEntry <=0?0:1; 
tabuListEntry = tabuListEntry - decrementAmount ; 

可以寫爲:

int tabuListEntry = tabuList[i][j]; 
int decrementAmount = 0; 
if(tabuListEntry <= 0) { 
    decrementAmount = 0; 
} else { 
    decrementAmount = 1; 
} 
tabuListEntry = tabuListEntry - decrementAmount ; 

可以寫爲:

int tabuListEntry = tabuList[i][j]; 
int decrementAmount = 0; 
if(tabuListEntry > 0) { 
    decrementAmount = 1; 
} 
tabuListEntry = tabuListEntry - decrementAmount ; 

可以寫爲:

int tabuListEntry = tabuList[i][j]; 
if(tabuListEntry > 0) { 
    tabuListEntry = tabuListEntry - 1; 
} 
+4

在大多數示例中,您都錯過了返回'tabuList [i] [j]'的賦值。 – Oded

+1

@Oded是的,謝謝你指出。 「修改過的數值重新返回到數組中將作爲練習留給用戶使用」 - 拿這個,每一本高中數學書都是這樣寫的! :) –

16

你是不是在找操作正確。

這是conditional operator ?:,它是JavaScript或Java(和其他語言,如C#)中唯一的三元運算符。三元表示它有三個參數。

本質上講,這是什麼意思:

(condition)?(true branch):(false branch) 
    param1  param2  param3 

在你的代碼示例,條件(參數1)是:

tabuList[i][j]<=0 

如果爲真,0(參數2)返回。如果爲false,則返回1(param3)。

然後通過-=運算符從tabuList[i][j]減少返回值。

整個聲明:

tabuList[i][j]-=tabuList[i][j]<=0?0:1; 

可以寫爲:

if (tabuList[i][j] > 0) 
    tabuList[i][j]--; 
相關問題