【问题标题】:Ternary operator in java vs c [duplicate]java vs c中的三元运算符[重复]
【发布时间】:2014-11-03 06:14:28
【问题描述】:

为什么这个三元运算符在这里不起作用,而在 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");
        }
    }

【问题讨论】:

  • 这是因为 System.out.println() 返回 void 其中表达式期望一些值。

标签: java ternary-operator


【解决方案1】:

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

System.out.println(i%2==0 ? "even" : "odd");

从根本上说,Java 不是 C。

编辑

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

引用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 方法是一个编译时错误。

【讨论】:

  • 我没有得到你,我在哪里分配任何东西?
  • @curositykiller 已编辑。添加了重点。
  • 第 15.25 节可能也很有趣:“第二个或第三个操作数表达式调用 void 方法是一个编译时错误。”
  • @user3580294 谢谢!已添加。
猜你喜欢
  • 1970-01-01
  • 2014-01-16
  • 2014-09-29
  • 2011-11-14
  • 2015-04-04
  • 2015-03-25
  • 1970-01-01
  • 2012-08-15
  • 2013-08-13
相关资源
最近更新 更多