簡體   English   中英

用戶在給定整數數組中查找素數的方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM