2012-08-17 79 views
5

我不知道在java中代表什么问号(?),我正在做一个小程序,一个Nim游戏。正在寻找一本书,帮助,并看到了这样一句话:什么是“?”在Java中的意思是?

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

我不明白,什么都会?代表,它可以是与if语句,但是你把它放在一个变量?和:可以是“别的”? (我刚才说的这些东西可能会让人误解)

+0

请参阅[?:](https://en.wikipedia.org/wiki/%3F :)。 – 2012-08-17 13:19:02

回答

21

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

这叫做三元运算符,它可以用作if-else。这相当于

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

按照此tutorial了解更多信息和用法。

+0

为什么非常感谢你先生! – Alexein 2012-08-17 12:53:54

+9

@Alexein:不要感谢,[接受](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work):-) – 2012-08-17 12:58:06

6

ternary operator也被称为条件运算,看看reference

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

如。 operand1 ? operand2 : operand3

  • 如果操作数为真,则返回操作数2,则返回否则操作数3
  • 操作数必须是布尔类型
  • 操作数1可以是其值是布尔类型
  • 操作数的表达式和如果操作数2或操作数3中的一个是字节而另一个是短的,则返回的值的类型将是短的如果操作数2或操作数3中的一个是字节而另一个是短的,则返回值的类型将是短的
  • 如果操作数2或操作数3中的一个是字节,short或char,而另一个是可以装入其他操作数 范围内的常量int值,则返回值的类型将为另一个操作数的类型
  • 否则,正常的二进制数值升级适用
  • 如果操作数或操作数3一个是空,返回的类型将是另一个操作数的类型
  • 如果两个操作数和操作数3是不同类型的,他们中的一个必须与其他类型兼容(浇注料) reference
0

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

在您的例子:

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

如果MIN> = 2,则指定2至pinsToTake,否则分配1

0
max = (a > b) ? a : b; 

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

0

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

0

This link会告诉你所有你需要的。

摘要备案的缘故:

这就是所谓的条件运算符。这是一个三元运算符, 需要三个术语:

BooleanExpression? Expr1:Expr2

评估了BooleanExpression。如果这是真的,整个表达式的值是Expr1。如果它是假的,则整个 表达式的值是Expr2。

因此它与if语句具有相同的用途,但它是一个 术语而不是整个语句。这意味着您可以将其嵌入 您不能使用整个语句的位置。

4

这是一个三元运算符。 Check Oracle's doc了解更多信息。长话短说,它是一个if-else语句,可以在一行中完成,并用于内部方法和定义变量值。

语法:

boolean_expression ? do_if_true : do_if_false; 

并行与if-else语句:

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

我不是故意用括号,因为你只能在do_if_truedo_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!";