为什么这个三元运算符在这里不起作用,但在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");
}
}
答案 0 :(得分:5)
因为您无法在Java中分配类似的语句。如果您使用它,那么您的三元将会起作用,
System.out.println(i%2==0 ? "even" : "odd");
从根本上说,Java不是C。
修改强>
您在评论中询问我在哪里分配任何内容?
引用Equality, Relational, and Conditional Operators (The Java Tutorials),
另一个条件运算符是
?:
,可以将其视为if-then-else语句的简写(在本课程的“控制流语句”部分中讨论)。此运算符也称为三元运算符,因为它使用三个操作数。在以下示例中,此运算符应显示为:“如果someCondition
为true
,请将value1
的值指定给result
。否则,请指定值value2
至result
。“
此外,Chapter 15. Expressions - Conditional Operator ? :
(JLS-15.25)说
第二个或第三个操作数表达式是
void
方法的调用是编译时错误。