2012-08-17 75 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!";