Closed. This question needs debugging details。它当前不接受答案。












想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。

4年前关闭。





if (CIElchOpposite[2] < 180.0) {
    CIElchOpposite[2] = CIElchOpposite[2] + 180;
} else {
    CIElchOpposite[2] = CIElchOpposite[2] - 180;
}


对于给定的CIElchOpposite[2] = 82;,当返回值应为180时,返回结果为262

CIELchOppositedouble []

它应该确实很容易,但是无论操作不正确是什么。
这是整个方法,将CIELab颜色映射到CIELch空间,计算相反的颜色(只需相加或相减180º),然后将其转换回CIELab。映射已独立检查,可以正常工作。

double CIElch[] = MapFromCIElabtoCIElch
            .mapLabToLch(inputColorOneCIELAB);
    double CIElchOpposite[] = new double[3];
    CIElchOpposite[0] = CIElch[0];
    CIElchOpposite[1] = CIElch[1];

    if (CIElchOpposite[2] < 180.0) {
        CIElchOpposite[2] = CIElchOpposite[2] + 180;
    } else {
        CIElchOpposite[2] = CIElchOpposite[2] - 180;
    }

    double[] CIElabOpposite = new double[3];
    CIElabOpposite = MapFromCIElabtoCIElch.mapLchToLab(CIElchOpposite);

最佳答案

CIElchOpposite[2]永远不会在if语句之前分配任何值

也许你是说

if (CIElch[2] < 180.0) {
    CIElchOpposite[2] = CIElch[2] + 180;
} else {
    CIElchOpposite[2] = CIElch[2] - 180;
}


注意Java使用camelCase,例如cielchOppositecieLch

09-12 12:28