Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我必须弄清楚数组中的数字是否是给定数字的因子_Java - Fatal编程技术网

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;
}