2014-11-03 92 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