为什么我能';不要像Java中的if-else语句那样使用(?:)运算符?

为什么我能';不要像Java中的if-else语句那样使用(?:)运算符?,java,Java,我可以使用(?:)操作符定义变量。但是为什么我不能将它用作if-else语句来执行基于条件的语句呢 我尝试了以下操作: char first = queue.remove(); (first == 'W') ? women++ : men++; 但不起作用。这叫做三元运算符,它产生一个表达式,而不是一个语句。分号跟在语句后面 以下内容有效,因为它既是一个语句又是一个表达式(如果foo的返回类型为void,那么它只是一个语句): 以下内容无效,原因与三元运算符示例无效相同(文字字符串只是一个表达

我可以使用(?:)操作符定义变量。但是为什么我不能将它用作if-else语句来执行基于条件的语句呢

我尝试了以下操作:

char first = queue.remove();
(first == 'W') ? women++ : men++;

但不起作用。

这叫做三元运算符,它产生一个表达式,而不是一个语句。分号跟在语句后面

以下内容有效,因为它既是一个语句又是一个表达式(如果
foo
的返回类型为void,那么它只是一个语句):

以下内容无效,原因与三元运算符示例无效相同(文字字符串只是一个表达式):


如果要根据布尔值执行一条或另一条语句,请使用If-then语句。如果希望表达式根据布尔值取值,请使用三元运算符。它们是不可互换的。

虽然
语句允许代码的逻辑流动,但三元运算符实际上是一个包含三个操作数的运算符。三元运算符产生一个表达式,而不是一个语句。

因为必须将某些内容返回到变量中。这与if/else语句的语义不同。当然可以:
women+=(first=='W')?1 : 0;查看Java三元运算符以了解@alfasin我知道,但我在问为什么我不能使用它来运行语句。“为什么我不能将方形块装入圆孔?”---三元运算符是错误的工作工具。此答案的最后一部分与上一个答案完全相同。你只是复制了它吗?不,他只是抢先一步。你能详细说明一下表达式和语句之间的区别吗(也许用一个例子)Thankso表达式只能分配给变量吗?你可以将表达式分配给变量,或者将它作为参数传递给你调用的函数。我想检查一下我的理解。==是运算符,它需要两个表达式,对吗?
foo();
"xyzzy";