对于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;
}
答案 0 :(得分:4)
Math.abs
来电中的陈述正在评估为boolean
(a - 10 > b - 10
将为true
或false
),但没有方法为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
的操作,它只是没有逻辑意义,正如您所看到的那样。
另外,在旁注中,我建议在代码中添加一些格式,这有点尴尬。