java中的含义是什么?= 0?0:1;

时间:2014-02-11 12:20:15

标签: java

我试图在java中理解这个程序,但我是这种语言的新手。

你能告诉我什么

<=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;
         } 
        }
    }

3 个答案:

答案 0 :(得分:16)

您没有正确查看操作员。

这是conditional operator ?:,它是JavaScript或Java(以及其他语言,如C#)中唯一的三元运算符。三元意味着它有三个参数。

基本上这就是它的含义:

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

在您的代码示例中,条件(param1)为:

tabuList[i][j]<=0

如果为true,则返回0(param2)。如果为false,则返回1(param3)。

然后通过tabuList[i][j]运算符从-=递减返回值。

整个陈述:

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

可以写成:

if (tabuList[i][j] > 0)
   tabuList[i][j]--;

答案 1 :(得分: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;
}

答案 2 :(得分:1)

这就像条件一样工作,将取“ c <= 0?0:1;”

这意味着如果c小于或等于零,则答案为0,否则为1