删除并打印数组中的素数

时间:2015-01-22 12:30:09

标签: java arrays boolean primes

我有一个类的分配,目标是获取一个数组并通过一个方法运行它,该方法将以相反的顺序打出数组,然后通过第二个方法运行它来测试数字是否为素数然后打印没有素数的仍然反转的数组。我可以反过来订购部分,我遇到了质数部分的问题:

public class Driver {

    public static void main(String[] args) {
        // CTORs
        int[] MyArray = { 10, 8, 7, 14, 22, 11 };
        int[] myArray2 = new int[7];
        // METHOD CALLING
        MyArray = reverseOrder(6, MyArray);
        MyArray = primeCheck(MyArray, 6);
        for (int i = 0; i < myArray2.length; i++)
            System.out.println(myArray2[i] + " ");

    }// MAIN


    /*--------------------ARRAY PRIME TEST---------------------*/
    private static int[] primeCheck(int[] myArray, int num) {
        //prime
        boolean prime = true;
        int[] myArray2 = new int[10];
        //test all components of an array
        for (int i = num + 1 ; i >= 0; i++) {
            if (num % i > 0) {
                prime = false;
                System.arraycopy(myArray, 0, myArray2, 0, 4);
                return myArray2;
            }

        }
        return myArray2;
    }// ISPRIME REMOVE
}// CLOSE CLASS

我的输出如下:

11 22 14 7 8 10 0 
0 
0 
0 
0 
0 

我觉得自己很生疏,因为这是长时间休息后的第一个作业,所以任何指导或帮助都会受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

myArray2已定义且永远不会填充值。所以每个元素都是0。

我认为

for (int i = 0; i < myArray2.length; i++)

必须是

for (int i = 0; i < myArray.length; i++)

答案 1 :(得分:0)

for (int i = num + 1 ; i >= 0; i++)肯定有问题。以下是实现目标的一种方法。

public static void main(String[] args) {
     int[] arr = { 10, 8, 7, 14, 22, 11 };

     for(int i = 0; i < arr.length; i++) {
        if(!isPrime(arr[i])) {
            System.out.print(arr[i] + " ");
        }
    }

}

public static boolean isPrime(int num) {
    if(num < 2) return false;
    if(num == 2) return true;

    int remainder, divisor;
    divisor = num - 1;

    do {

        try {
            remainder = num % divisor;
        } catch (ArithmeticException e) {
            return false;
        }

        if(remainder == 0) return false;

        divisor--;

    } while (divisor > 1);

    return true;
}