我對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 回答

烙印99
TA貢獻1829條經驗 獲得超13個贊
有第二個索引變量,每當你找到一個素數時,它就會遞增。無需第二個循環。int primeCount
在記憶力充沛的現代,事情通常不會像這樣做。如果你沒有一些額外的硬性要求,你可以使用一個可調整大小的ArrayList<Integer>
,以及里面的東西。(如果需要,請在末尾將其轉換回int[])。在這種情況下,這也更好,因為通常您的調用將比 ArrayList 重新分配慢得多。add()
countPrimes

尚方寶劍之說
TA貢獻1788條經驗 獲得超4個贊
仔細閱讀你的話:
在位置應該是,然后是每次它找到一個素數。
copyArr
0
+1
這意味著新數組中的索引不依賴于其在舊數組中的位置。
創建計數器。每次將質數放入新數組中時,請將其遞增 1。因此,您始終可以知道在哪里放置新數字。
添加回答
舉報
0/150
提交
取消