首页 > 解决方案 > 在 Java 中返回布尔类型的结果

问题描述

我正在尝试解决这个问题:

编写一个名为 areFactors 的方法,它接受一个整数 n 和一个整数数组,如果数组中的数字都是 n 的因数(也就是说 n 可以被所有整数整除),则返回 true。

这是我的答案之一:

public static boolean arefactors(int n, int[] factors){
    for (int factor:factors){
       if (n % factor != 0)
           return false;
    }
    return true;
}

但是为什么当我先反转并返回'true'时,程序不能正常工作并且无论我在数组中使用什么整数都总是返回true?在这种情况下:

public static boolean areFactors( int n, int[] factors) {
    for (int factor: factors) {
        if ( n % factor==0) 
            return true;
    }
    return false;
}

标签: javaboolean

解决方案


因为您只需要返回,因为数组的true所有ints都可以被. 但是您在第二个代码中的第一个匹配时返回:factorsn
true

public static boolean areFactors( int n, int[] factors) {
for (int factor: factors) {
    if ( n % factor==0) 
        return true; // only first element(s) of factors may be divisible 
                     // by n and not the next one. But too late you returned true
    }
    return false;
}

虽然您的第一个代码是正确的:

public static boolean arefactors(int n, int[] factors){
    for (int factor:factors){
       if (n % factor != 0)
           return false;  // if any is not divisible by n, you return false
    }
    return true; // if you go there, it means all numbers are divisible by n
                 // you can then return true
}

推荐阅读