用于填充布尔数组的Int数组

时间:2015-10-05 15:53:03

标签: java boolean

我应该评估一个整数数组并确定它们是否是素数。一旦我这样做,我必须返回(主要)一系列布尔值。

public static boolean [] Advanced_7(int Array []){

    boolean [] verdict = new boolean [Array.length];

    for(int i = 0; i < Array.length; i++)
    {
        verdict[i] = true; 

        for(int j = 2; j <= Array[i]; j++)
        {
             if (Array[i] % j == 0) 
             {
                 verdict[i] = false;  
             }
         }
    }

    return verdict;
}

2 个答案:

答案 0 :(得分:1)

只是一些一般提示:

首先:您可以简化您检查数字是否为素数的方式;你只需要检查 half 你要检查的整数的元素。

第二:一旦你知道这个数字是非素数,你为什么要继续检查?一旦知道该数字是非素数,就打破for循环。

第三:要将结果输出到控制台,您不能简单地打印对象(数组是一个对象,因此无论打印得到什么都看起来很奇怪)。在main过程中,将结果存储在变量中,并使用for循环打印每个条目。

如评论中所述,您应该使用Java命名约定。下面的代码是对原始代码的重写,使用这些约定并应用我上面给出的建议。

public static boolean[] checkForPrimes(int[] numbers) {
/*
    The name for the function should be a verbe, and start 
    with a lower case letter.
    The input parameter for the function is an object, and 
    must also start with a lower case letter.
 */
    boolean[] veredict = new boolean[numbers.length];
    for(i = 0; i < numbers.length; i++) {
        veredict[i] = true;
        // You only need to check up to half each number
        for(j = 2; j <= numbers[i] / 2; j++) {
            if(numbers[i] % j == 0) {
                veredict[i] = false;
                break; // once you know the number is non-prime
                       // exit the loop
            }
        }
    }
    return veredict;
}
public static void printResult(int[] numbers) {
    boolean[] veredict = checkForPrimes(numbers);
    // You must traverse the arrays to print them out:
    for(i = 0; i < numbers.length; i++) {
        System.out.println(numbers[i] + " " + veredict[i]);
    }
}

答案 1 :(得分:0)

以下内容包含一些无法解释的更改。 如果你能解释它们,请使用它们。

int element = Array[i];
verdict[i] = element % 2 == 0;
if (verdict[i])
{
    for (int j = 3; j <= element / 2; j += 2)
    {
         if (element % j == 0) 
         {
             verdict[i] = false;
             break;
         }
     }
}

对于快速打印,您可以使用:

System.out.println(Arrays.toString(verdict));