Java 我必须弄清楚数组中的数字是否是给定数字的因子
例:Java 我必须弄清楚数组中的数字是否是给定数字的因子,java,Java,例: areFactors([3,4,6],12)->正确 areFactors([2,4,6],10)->假 areFactors([],6)-->false 公共静态布尔因子(int[]arrNum,int n){ 如果(arrNum==null | | arrNum.length==0){ 返回false; } for(int i=0;i
- areFactors([3,4,6],12)->正确
- areFactors([2,4,6],10)->假
- areFactors([],6)-->false
公共静态布尔因子(int[]arrNum,int n){
如果(arrNum==null | | arrNum.length==0){
返回false;
}
for(int i=0;i
有一些测试无法通过,我也得到了除零异常。如果数组包含任何0,则应返回false 除此之外,当遇到不是
n
因子的数字时,应返回false
public static boolean areFactors (int[] arrNum, int n) {
if (arrNum == null || arrNum.length == 0) {
return false;
}
for (int i = 0; i < arrNum.length; i++) {
if (arrNum[i] == 0 || n % arrNum[i] != 0) {
return false;
}
}
return true;
}
仅在循环之后返回true
(即,在验证所有数组元素都是n
的因子之后)
公共静态布尔因子(int[]arrNum,int n){
如果(arrNum==null | | arrNum.length==0){
返回false;
}
for(int i=0;i
您的代码中存在逻辑错误
在这里,您可以找到您将要实现的解决方案:
public static boolean areFactors(int[] arrNum, int n) {
if (arrNum == null || arrNum.length == 0) {
return false;
}
for (int i = 0; i < arrNum.length; i++) {
int num = arrNum[i];
if (num != 0 && n % num != 0) {
return false;
}
}
return true;
}
公共静态布尔因子(int[]arrNum,int n){
如果(arrNum==null | | arrNum.length==0){
返回false;
}
for(int i=0;i
当您第一次找到n
的除数时,您将返回true
。这是错误的。您需要检查数组中的所有元素。您应该解释您的修复,您错过了空指针检查。@Milgo空指针检查在第一行完成。如果arrNum包含0怎么办?@Milgo这是一个边缘案例。它没有空指针检查。此检查取决于任务和输入。然而,主要的障碍已经被克服了。您错过了一个算术异常:/by zero
public static boolean areFactors(int[] arrNum, int n) {
if (arrNum == null || arrNum.length == 0) {
return false;
}
for (int i = 0; i < arrNum.length; i++) {
int num = arrNum[i];
if (num != 0 && n % num != 0) {
return false;
}
}
return true;
}