2014-11-03 96 views
1

爲什麼這個三元運算符不能在這裏工作,但是在c中它的工作原理是什麼?java vs c中的三元運算符

import java.util.Scanner; 


     class Pack { 
     public static void main(String[] args) { 
      System.out.println("enter a number"); 
      Scanner s=new Scanner(System.in); 
      int i=s.nextInt(); 
      i%2==0?System.out.println("even"):System.out.println("odd"); 
     } 
    } 
+1

它因爲'System.out.println()'返回'無效'在哪裏作爲表達期待一些價值。 – Rustam 2014-11-03 06:18:21

回答

5

因爲您不能在Java中分配類似的語句。如果你用它喜歡你的三元會的工作,

System.out.println(i%2==0 ? "even" : "odd"); 

從根本上說,Java是不是C.

編輯

您在評論中問,我在哪裏分配什麼

引述Equality, Relational, and Conditional Operators (The Java Tutorials)

另一個條件運算符是?:,它可以被看作是速記的if-then-else語句(在本節課的流程控制語句中討論)。此運算符也稱爲三元運算符,因爲它使用三個操作數。在以下示例中,應將此運算符理解爲:「如果someConditiontrue,則將值value1指定爲result,否則將值value2指定爲result

此外,Chapter 15. Expressions - Conditional Operator ? : (JLS-15.25)

它是第二或第三操作數表達是一個void方法的調用一個編譯時間錯誤。

+0

我沒有得到你,我在哪裏分配任何東西? – curositykiller 2014-11-03 06:21:42

+0

@curositykiller編輯。重點補充。 – 2014-11-03 06:24:54

+1

15.25節也許會引起人們的興趣:「第二個或第三個操作數表達式是一個void方法的調用,這是一個編譯時錯誤。」 – awksp 2014-11-03 06:27:31