java与c中的三元运算符

时间:2014-11-03 06:14:28

标签: java ternary-operator

为什么这个三元运算符在这里不起作用,但在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 个答案:

答案 0 :(得分: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。否则,请指定值value2result。“

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

  

第二个或第三个操作数表达式是void方法的调用是编译时错误。