我试图在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;
}
}
}
答案 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