小编典典

Java三元运算符(?:)无效;第二或第三操作数返回布尔值

java

有人可以告诉我为什么对三元运算符的使用不正确吗?操作数2和3返回布尔值。

public class Something {
...
private static final double REFERENCE_FRAME_MID_X = 0;
private static final double REFERENCE_FRAME_MID_Y = 0;

private boolean findInsideOrOutsideGeneralEllipse(Point2D destCirclePos) {
    List<Boolean> returnValue = new ArrayList<>();
    Point2D referenceFrameCenter = new Point2D.Double(REFERENCE_FRAME_MID_X, REFERENCE_FRAME_MID_Y);
    Ellipse2D insideAreaEllipse2D = getEllipse2D(referenceFrameCenter.getX(), referenceFrameCenter.getY(),
                                                    destCirclePos.distance(referenceFrameCenter));

    // doesn't work
    insideAreaEllipse2D.contains(destCirclePos) ? returnValue.add(true) : returnValue.add(false);

    // works
    if (insideAreaEllipse2D.contains(destCirclePos)) {
        returnValue.add(true);
    } else {
        returnValue.add(false);
    }
}
...
}

阅读 217

收藏
2020-09-23

共1个答案

小编典典

Java三元运算条件的用法应如下所示

result = testCondition ? value1 : value2

这是Java语言规范。

相等,关系和条件运算符

在下面的示例中,该运算符应读取为:“如果 someConditiontrue ,则将 value1 的值分配给result。否则,将
value2 的值分配给result

2020-09-23