我对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};在位置应该是,然后是每次它找到一个素数。如果我给它位置,如 在 中,然后说素数在位置,它会尝试将素数保存到 的位置上,如果原始数组中只有三个素数,则不存在,这将给出只有三个长度。copyArr0+1icopyArr[i] = arr[i]55copyArrcopyArr有些东西告诉我一个不同的for循环,或者甚至一个额外的for循环会有所帮助,但我看不出我应该如何实现它。非常感谢您的帮助!
2 回答
![?](http://img1.sycdn.imooc.com/5333a0780001a6e702200220-100-100.jpg)
烙印99
TA贡献1829条经验 获得超13个赞
有第二个索引变量,每当你找到一个素数时,它就会递增。无需第二个循环。int primeCount
在记忆力充沛的现代,事情通常不会像这样做。如果你没有一些额外的硬性要求,你可以使用一个可调整大小的ArrayList<Integer>
,以及里面的东西。(如果需要,请在末尾将其转换回int[])。在这种情况下,这也更好,因为通常您的调用将比 ArrayList 重新分配慢得多。add()
countPrimes
![?](http://img1.sycdn.imooc.com/545863f50001df1702200220-100-100.jpg)
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
仔细阅读你的话:
在位置应该是,然后是每次它找到一个素数。
copyArr
0
+1
这意味着新数组中的索引不依赖于其在旧数组中的位置。
创建计数器。每次将质数放入新数组中时,请将其递增 1。因此,您始终可以知道在哪里放置新数字。
添加回答
举报
0/150
提交
取消