12

我不知道问号 ( ?) 在 java 中代表什么,我正在做一个小程序,一个 Nim 游戏。正在看一本书,寻求帮助,看到了这样的说法:

int pinsToTake = (min >= 2) ? 2 : 1;

我不明白,它?代表什么,它可以与 if 语句有关,但你把它放在一个变量中吗?可以是:“别的”吗?(我刚才说的这件事可能会产生很大的误导)

4

9 回答 9

30

someval = (min >= 2) ? 2:1;

这称为三元运算符,可以用作if-else. 这相当于

if((min >= 2) {
   someval =2;
} else {
   someval =1
}

按照本教程了解更多信息和用法。

于 2012-08-17T12:50:34.277 回答
8

ternary operator也称为条件运算符,看看参考

Object bar = foo.isSelected() ? getSelected(foo) : getSelected(baz);

例如。operand1 ? operand2 : operand3

  • 如果操作数 1 为真,则返回操作数 2,否则返回操作数 3
  • 操作数 1 必须是布尔类型
  • 操作数 1 可以是计算结果为布尔类型的表达式
  • 操作数 1 和操作数 2 必须是可提升的数字类型或可转换的对象引用,或者为 null
  • 如果操作数 2 或操作数 3 之一是字节,另一个是短整数,则返回值的类型将是短整数
  • 如果操作数 2 或操作数 3 之一是 byte、short 或 char,而另一个是适合其他操作数范围的常量 int 值,则返回值的类型将是其他操作数的类型
  • 否则,正常的二进制数字提升适用
  • 如果操作数 2 或操作数 3 之一为空,则返回的类型将是另一个操作数的类型
  • 如果操作数 2 和操作数 3 都是不同的类型,则其中一个必须兼容(可转换)到另一个类型 引用
于 2012-08-17T12:50:40.880 回答
4

它的意思是:

if(min >= 2) 
   someval =2;
else 
   someval =1

它被称为三元运算符也 请参阅这个 java示例

于 2012-08-17T12:52:31.463 回答
4

那是一个三元运算符。查看 Oracle 的文档以获取更多信息。长话短说,它是一个 if-else 语句,可以在一行中完成并在方法内部使用并定义变量值。

句法:

boolean_expression ? do_if_true : do_if_false;

与 if-else 语句的并行性:

if(boolean_expression)
    //do_if_true;
else 
    //do_if_false;

do_if_true我没有故意使用括号,因为你只能在and中执行一行代码do_if_false

使用示例:

boolean hello = true;
String greetings = hello ? "Hello World!" : "No hello for you...";

这将设置someString"Hello World!"因为布尔变量hello评估为真。另一方面,你可以嵌套这个表达式:

boolean hello = true;
boolean world = false;

String greetings = hello ? (world ? "Hello World!" : "Hello Stranger!") : "No hello for you...";

在这种情况下,问候语将具有一个值"Hello Stranger!"

于 2012-08-17T12:59:21.493 回答
1

它被称为三元 If 运算符,它只是一个简写形式if...else

于 2012-08-17T12:51:30.927 回答
0

"? :" 是一个三元运算符,相当于 if else 语句。

在您的示例中:

   pinsToTake = (min >= 2) ? 2 : 1 

如果 min >= 2 然后将 2 分配给 pinsToTake,否则分配 1

于 2012-08-17T12:51:48.153 回答
0
max = (a > b) ? a : b;

(a > b) ? 一:乙;是一个表达式,它返回两个值之一,a 或 b。
测试条件 (a > b)。如果为真,则返回第一个值 a。如果为假,则返回第二个值 b。
返回哪个值取决于条件测试,a > b。条件可以是任何返回布尔值的表达式。

于 2012-08-17T12:52:05.837 回答
0

它被称为条件运算符。这就是它的工作原理。如果 min 大于或等于 2,那么后面的第一个值?此处为 2 将分配给相应的变量,否则将分配此处为 1 的第二个值。

于 2012-08-17T12:52:07.317 回答
0

这个链接会告诉你所有你需要的。

存档摘要:

它被称为条件运算符。这是一个三元运算符,需要三个术语:

布尔表达式?经验 1 : 经验 2

BooleanExpression 被评估。如果为真,则整个表达式的值为 Expr1。如果为假,则整个表达式的值为 Expr2。

因此,它的用途与 if 语句相同,但它是一个术语而不是整个语句。这意味着您可以将其嵌入到无法使用整个语句的地方。

于 2012-08-17T12:53:26.103 回答