【问题标题】:Not a statement. Why not? [duplicate]不是声明。为什么不? [复制]
【发布时间】:2019-11-15 17:24:50
【问题描述】:

当我尝试编译以下 Java 程序时:

public class MyClass 
{
    static int f1() { return 10; }
    static int f2() { return 20; }

    public static void main(String args[])
    {
        int x = 10;
        (x <= 10) ? f1() : f2();
    }
}

我得到了错误:

/MyClass.java:9: error: not a statement
        (x <= 10) ? f1() : f2();
                  ^

Java 语言定义将语句称为赋值、递增/递减、方法调用或对象创建之一。我的错误“陈述”涉及方法调用,因此应该有效。事实上,如果我有一个像这样的声明:

f1();

编译器编译程序时不会发出任何呜咽声。同样,如果我将最后一行更改为:

int y = (x <= 10) ? f1() : f2();

那么,一切都是笨拙的。

作为最后一条信息,C 和 C++ 都没有引起注意:

 (x <= 10) ? f1() : f2();

【问题讨论】:

  • “涉及”与“是”不同。您的“声明”是 ?: 运算符表达式。表达式不是 Java 中的有效语句(即它不是您列出的四个语句)。 C 和 C++ 做什么或不做什么无关紧要。

标签: java conditional-operator


【解决方案1】:

三元运算符用于表达式。对于语句,您可以使用 if 语句。这就是语法的定义方式。期间。

【讨论】:

  • 编译器错误信息不明确。这是否意味着我没有提供任何合格的 Java 语句,或者运算符 ?: 不能在语句中使用。在接受您的答复之前,我将等待几天。
  • @SeshadriR 消息非常明确:编译器正在等待一个语句,但它发现了其他内容。
猜你喜欢
  • 1970-01-01
  • 2016-04-05
  • 2011-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2012-05-07
相关资源
最近更新 更多