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)
因为你不能在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语句的简写(在本课程的控制流语句部分中讨论).此运算符也称为三元运算符,因为它使用三个操作数.在下面的示例中,此运算符应读作:"如果someCondition是true,则赋值value1toresult.否则,赋值value2toresult."
此外,第15章表达式 - 条件运算符? :(JLS-15.25)说
第二个或第三个操作数表达式是
void方法的调用是编译时错误.