为什么这个条件语句不能编译?

时间:2013-10-28 22:40:01

标签: java

对于CodingBat练习,我必须看到两个int值中哪一个最接近10,但它一直给我一个错误,我不确定为什么。

我得到的错误是:

  

abs(int)中的方法Math不适用于参数(boolean

public int close10(int a, int b) {
    int m;
    if (Math.abs(a - 10 > b - 10)) // here is the error
        m = b;
    else
        m = a;

    return m;
}

4 个答案:

答案 0 :(得分:4)

Math.abs来电中的陈述正在评估为booleana - 10 > b - 10将为truefalse),但没有方法为Math.abs(boolean)

也许你应该使用更像......

的东西
if (Math.abs(a - 10) > Math.abs(b - 10)) {...}

...代替

答案 1 :(得分:1)

尝试Math.abs(a - 10) > Math.abs(b - 10)

答案 2 :(得分:1)

表达式a - 10 > b - 10具有boolean值,这就是编译器所说的。也许你会想要这样的东西:

Math.abs(a - 10) > Math.abs(b - 10)

答案 3 :(得分:0)

您需要使用Math.abs方法两次,而只需使用一次:

    if (Math.abs(a - 10) > Math.abs(b - 10))

您无法在类似Math.abs的条件语句中执行类似a - 10 > b - 10的操作,它只是没有逻辑意义,正如您所看到的那样。 另外,在旁注中,我建议在代码中添加一些格式,这有点尴尬。