java与c中的三元运算符

cur*_*ler 1 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");
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ell*_*sch 5

因为你不能在Java中分配这样的语句.如果你使用它,你的三元组会工作,

System.out.println(i%2==0 ? "even" : "odd");
Run Code Online (Sandbox Code Playgroud)

从根本上说,Java不是C.

编辑

你在评论中问,我在哪里分配任何东西

引用Equality,Relational和Conditional Operators(The Java Tutorials),

另一个条件运算符?:,可以被认为是if-then-else语句的简写(在本课程的控制流语句部分中讨论).此运算符也称为三元运算符,因为它使用三个操作数.在下面的示例中,此运算符应读作:"如果someConditiontrue,则赋值value1to result.否则,赋值value2to result."

此外,第15章表达式 - 条件运算符? :(JLS-15.25)

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