-2

对于 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

4 回答 4

4

调用中的语句Math.abs被评估为booleana - 10 > b - 10将是truefalse),但没有这样的方法Math.abs(boolean)

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

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

...反而

于 2013-10-28T22:42:46.950 回答
1

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

于 2013-10-28T22:42:54.537 回答
1

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

Math.abs(a - 10) > Math.abs(b - 10)
于 2013-10-28T22:43:32.373 回答
0

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

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

您不能Math.abs在条件语句上执行类似的操作a - 10 > b - 10,如您所见,它只是没有逻辑意义。另外,在旁注中,我建议您在代码中使用更多格式,这有点尴尬。

于 2013-10-28T22:45:23.687 回答