我最近开始学习Java,需要在下面的一段代码中找到语法错误。如果有人可以解释为什么这是错误的,也会非常感激。
public boolean isDivisible(int a, int b) {
return a % b != 0;
}
提前致谢。
答案 0 :(得分:3)
该代码中没有语法错误,正如您可以通过将其合并到一个完整的程序中看到它编译正常一样:
public class Test{
public boolean isDivisible(int a, int b) {
return a % b != 0;
}
public static void main(String[] args) {
Test t = new Test();
System.out.println(t.isDivisible(10, 2));
System.out.println(t.isDivisible(10, 3));
}
}
然而, 是一个逻辑问题,因为它输出false
后跟true
,尽管事实上有10个 可以被2整除,但不能被<3>整除。
换句话说,你有一种错误的比较感。一个数字可以被认为是可分的,模数运算符给你一个零值(不是你现在拥有的非零值)。
更好的实现,纠正逻辑错误并覆盖试图除以零的情况,将是这样的:
public boolean isDivisible(int a, int b) {
if (b == 0) return false;
return (a % b) == 0;
}