[英]Creating recursive static method to find product of prime numbers in array
[英]Method to find prime numbers in a given array of integers by user
我正在嘗試在 JAVA 中編寫一個方法,該方法從用戶接收整數數組,並返回該數組中素數的 ArrayList。 我試圖首先驗證數組的每個元素是否是素數。 然后我在 ArrayList 中添加了素數,最后返回了 ArrayList。 但是,當我運行代碼時,它會返回所有數字,即使邏輯在我看來是正確的。
這是我的代碼:
package numeriPrimi;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;
public class NumeriPrimi {
public static ArrayList arrayPrimi(int[] number) {
ArrayList<Integer> listaPrimi = new ArrayList<>();
boolean ris = false ;
for(int i=0 ; i<number.length ; i++) {
if (number[i] == 2) {
ris = true;
}
else {
if (number[i] != 2 && number[i] % 2 == 0 ) {
ris = false ;
}
else {
if(number[i]<=3) {
for(int j=3 ; j < number[i]; j++) {
if(number[i] % j == 0 ) {
ris = false ; }
}
}
}
}
if(ris=true) {
listaPrimi.add(number[i]);
}
}
return listaPrimi;
}
public static void main(String[] args) {
Scanner input= new Scanner(System.in);
System.out.println("how many elements does the array have?");
int l= Integer.parseInt(input.nextLine());
int[] numbers = new int[l];
System.out.println("enter the array of numbers?");
for(int i=0 ; i< numbers.length ; i++) {
numbers[i] = input.nextInt();
}
System.out.println("the array is : " + Arrays.toString(numbers));
ArrayList<int[]> lista = NumeriPrimi.arrayPrimi(numbers);
System.out.println("the Prime numbers in the array "+ Arrays.toString(numbers) + " are as follows : \n" + NumeriPrimi.arrayPrimi(numbers));
}
}
ris = true
品牌的值ris
等於true
,然后整個表達式解析到該值。 換句話說:
if (ris = true) System.out.println("hello");
等同於:
ris = true;
System.out.println("hello");
無論出於何種原因,您都不應該在 Java 中編寫== true
。 這總是毫無意義的。 只有true
是真的,所以假設你有一個boolean
變量x
,不要寫if (x == true)
,只寫if (x)
。 如果你有一個計算,同樣的交易。 寫if (x < 5)
,而不是if ((x < 5) == true)
。
在任何其他時間(即使用非布爾值)執行那個= foo
技巧幾乎不會遇到這個問題: if (x = 5)
不編譯( if (x == 5)
)。
修復此樣式錯誤(寫作== true
)-不僅在這里,而且通常在您的編程方式中。 順便說一下,這個錯誤會消失。
這有點難以理解,但您永遠不會將“ris”值設置回 false,因此您最終會在第一個 ris = true 之后添加所有內容。 通過將其設置為 false 來啟動 for 循環,或者在將當前元素添加到列表后將其設置為 false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.