Java 删除并打印数组中的素数

Java 删除并打印数组中的素数,java,arrays,boolean,primes,Java,Arrays,Boolean,Primes,我有一个类的任务,目标是获取一个数组并通过一个方法运行它,该方法将以相反的顺序打印数组,然后通过第二个方法运行它以测试数字是否为素数,然后打印仍然相反的顺序数组,而不打印素数。我可以得到相反顺序的部分,很好,我遇到了质数部分的问题: public class Driver { public static void main(String[] args) { // CTORs int[] MyArray = { 10, 8, 7, 14, 22, 11 }

我有一个类的任务,目标是获取一个数组并通过一个方法运行它,该方法将以相反的顺序打印数组,然后通过第二个方法运行它以测试数字是否为素数,然后打印仍然相反的顺序数组,而不打印素数。我可以得到相反顺序的部分,很好,我遇到了质数部分的问题:

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

我感到非常生疏,因为这是长时间休息后返回的第一个作业,因此非常感谢任何指导或帮助。

myArray2
是定义的,从不填充值。所以每个元素都是0

我想

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

for (int i = 0; i < myArray.length; i++)
for(int i=0;i
对于(inti=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;
}
publicstaticvoidmain(字符串[]args){
int[]arr={10,8,7,14,22,11};
对于(int i=0;i1);
返回true;
}

for(int i=num+1;i>=0;i++)
看起来不正确。您是否尝试过一步一步地调试代码以找出哪里出了问题?在初始检查中,您没有检查数组的任何元素。将元素总数(6)与计数器变量进行比较。
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;
}