用于初始化两个变量之一的条件运算符

Conditional operator to initalize one of two variables

我知道可以做这样的事情来根据特定条件初始化整数变量:

boolean myCond = getCond();
int x = myCond ? 13 : 42;

但是有没有办法使用条件运算来选择两个变量之一呢?相当于以下 if-else

int x = 0;
int y = 0;

if(myCond){
   x = 13;
}
else{
   y = 13;
}

根据条件赋initial/other值即可:

int x = myCond ? 13 : 0;
int y = !myCond ? 13 : 0;

您必须明确分配变量才能使用它们(如果它们是局部变量)。


我想你可以这样做:

int unused = myCond ? (x = 13) : (y = 13);

但这是对语法的滥用,因为您必须引入未使用的变量才能从条件表达式中生成语句。

由于无论如何都需要分配和初始化这两个变量,所以这样做以满足!myCond条件。那么其他条件就够了

int x = 0;
int y = 13;

if(myCond){
   x = 13;
   y = 0;
}

添加到其他答案:你不能像

这样写作业的原因
   (cond ? x : y) = 13;   

是因为the Java language说你不能。

如果您查看 15.26 中 赋值语句 的定义,赋值运算符的左侧在允许的范围内非常有限。稍微简化一下讨论,它要么是标识符(即对简单变量的赋值),要么是数组访问(即对数组元素的赋值),要么是字段访问(即对成员变量的赋值)。