【问题标题】:Method to copy primes from one array to another in Java在Java中将素数从一个数组复制到另一个数组的方法
【发布时间】:2019-03-27 21:21:14
【问题描述】:

我对 Java 比较陌生,我正在尝试找出一种方法来复制数组中的所有素数并将它们复制到另一个数组。

为此,我实现了一个单独的isPrime() 方法来检查元素是否是素数,以及另一个计算该数组countPrimes() 中素数数量的方法,这样我就可以确定新数组的大小。

这是我有点卡住的地方:

public static int[] primesIn(int[] arr) {
    int primeHolder = countPrimes(arr);
    int[] copyArr = new int[primeHolder];
    for (int i = 0; i < arr.length; i++) {
        if (isPrime(arr[i]) == true) {
            copyArr[>Needs to start from 0<] = arr[i];
        }
    }
    return copyArr;
}

int[] arrayMan = {3,5,10,15,13};

copyArr 的位置应该是0,然后是+1 每次它找到一个素数。如果我给它i位置,如copyArr[i] = arr[i],然后说素数在位置5,它会尝试将素数保存到位置5copyArr,它不存在如果原始数组中只有三个素数,则copyArr 的长度只有三个。

有些东西告诉我一个不同的 for 循环,或者甚至可能是一个额外的循环会有所帮助,但我看不出我应该如何实现它。非常感谢您的帮助!

【问题讨论】:

    标签: java for-loop primes


    【解决方案1】:

    拥有第二个索引变量int primeCount,并在找到素数时将其递增。不需要第二个循环。

    在记忆力充沛的现代,事情通常不会这样。如果您没有一些额外的硬性要求,您可以在其中使用可调整大小的ArrayList&lt;Integer&gt;add() 的东西。 (如果需要,最后将其转换回 int[] )。在这种情况下,这也更好,因为通常您的 countPrimes 调用将比 ArrayList 重新分配运行得慢得多。

    【讨论】:

      【解决方案2】:

      仔细阅读你的话:

      copyArr 的位置应该是0,然后是+1 每次它 找到一个素数。

      这意味着新数组中的索引不依赖于它在旧数组中的位置。
      创建一个计数器。并且每次将质数放入新数组时,将其增加 1。因此您始终可以知道将新数放在哪里。

      【讨论】:

        猜你喜欢
        • 2014-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-19
        • 2022-07-05
        • 2018-09-01
        • 2021-11-26
        • 1970-01-01
        相关资源
        最近更新 更多