2

为什么这个条件语句不起作用?o1 和 o2 是两个不同的对象。

o1.equals(o2) ? System.out.println("Objects are equal"): System.out.println("Objects are not equal");

4

5 回答 5

4

试试这个,条件运算符

System.out.println((o1.equals(o2) ? "Objects are equal": "Objects are not equal"));

因为您的代码不是语句。

于 2013-09-03T05:41:00.317 回答
4

这称为三元运算符。您不能在其中包含语句。

但是你可以有表达式。

String output = o1.equals(o2) ? "Objects are equal":"Objects are not equal";
于 2013-09-03T05:41:17.960 回答
2

尝试以这种方式替换您的代码

System.out.println((o1.equals(o2) ? "Objects are equal" : "Objects are not equal"));
于 2013-09-03T05:42:10.930 回答
2

来自 Java 语言规范,在“条件运算符”下 -

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

由于println是 void 方法,因此您的第二个和第三个操作数表达式符合此标准。至于为什么它会这样工作——这就是 Java 的定义方式。

于 2013-09-03T05:52:10.477 回答
0

试试这个会工作

System.out.println(o1.equals(o2) ? "Objects are equal": "Objects are not equal");
于 2013-09-03T05:42:41.173 回答