java - 如何创建仅包含偶数的数组的副本?

标签 java arrays

我必须创建一个方法,通过创建一个新数组来复制和打印数组中的偶数。我已经创建了一个名为 myNumbers 的数组。我认为问题在于 myEvenNumbers[z] 不会在 myEvenNumbers[0] 存储偶数,而是会存储第一个索引处的第一个偶数myNumbers。任何帮助将不胜感激!

这是我到目前为止的代码。

public static void copyAndPrintEvenNumbers() {
    System.out.println("All the even numbers are: ");
    int count = 0;

    for (int i =0; i < myNumbers.length; i++) {
        if (myNumbers[i] % 2 == 0) {
            count++;
        }
        int[] myEvenNumbers = new int[count];
        for (int z = 0; z < myNumbers.length; z++) {
            if (myNumbers[z] % 2 ==0) {
                myEvenNumbers[z] = myNumbers[z];
                System.out.println(myEvenNumbers[z]);
            }
        }

    }

}

最佳答案

您必须为 myEvenNumbers 数组声明第二个索引。当 z 超过 myEvenNumbers 数组的元素总数时,您将得到 IndexOutOfBounds。也像康纳说的那样,两个循环不应该嵌套。否则,您将丢弃先前的数组实例 (myEvenNumbers),并导致内存泄漏。

public static void copyAndPrintEvenNumbers() {

    System.out.println("All the even numbers are: ");
    int count = 0;

    for (int i =0; i < myNumbers.length; i++) {
        if (myNumbers[i] % 2 == 0) {
            count++;
        }
    }

    int[] myEvenNumbers = new int[count];
    int myEvenIndex = 0;
    for (int z = 0; z < myNumbers.length; z++) {
        if (myNumbers[z] % 2 ==0) {
            myEvenNumbers[myEvenIndex] = myNumbers[z];
            System.out.println(myEvenNumbers[myEvenIndex]);
            myEvenIndex++;
        }
    }

}
<小时/>

我个人会为偶数数组选择相同的大小(对内存来说有一点开销)来消除第一个循环,因为偶数的计数不能超过原始数组的计数。

public static void copyAndPrintEvenNumbers() {

    System.out.println("All the even numbers are: ");
    int count = 0;

    int[] myEvenNumbers = new int[myNumbers.length];
    int count = 0;
    for (int z = 0; z < myNumbers.length; z++) {
        if (myNumbers[z] % 2 ==0) {
            myEvenNumbers[count] = myNumbers[z];
            System.out.println(myEvenNumbers[count]);
            count++;
        }
    }
    System.out.println("There are " + count + " even numbers found");
}

关于java - 如何创建仅包含偶数的数组的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36409762/

相关文章:

java - 我从 gcm 收到消息 ID。但我在模拟器上没有收到

javascript - 将字节数组写入文件 JavaScript

javascript - 如果某些内容一次不在数组中,如何设置警报

java - hibernateentityManagerFactory init 抛出 ExceptionInInitializerError java.lang.ClassCastException

java - 在构造函数中初始化日历

arrays - 如何在 GOLANG 中解析 JSON 哈希的 JSON 数组

Java TCP Socket发送字节数组

java - 在具有空值的情况下按列对二维 Java 字符串数组进行排序

java swing按钮 Action

java - Java中的内存分配和管理