簡體   English   中英

確定數組的所有元素是否都是質數

[英]Determine if all the elements of array are prime numbers

我正在嘗試編寫一個Java程序,該程序確定數組的所有元素是否都是質數。 這是我的代碼:

boolean allPrimes(int[] ade){
        int i = 0; //counter
        boolean Prime = true; //initial boolean value
        while (i<ade.length && !Prime){
            if (p.isPrime(ade[i])) //function which determines if an int is prime.
                Prime = true;
            else
                Prime = false;
            i=i+1;
            }
        return Prime;
    }

我認為這是不正確的,因為我進行了一些測試並且它們失敗了。 我究竟做錯了什么? 謝謝

您像這樣初始化了布爾Prime

 boolean Prime = true;

這意味着您永遠不會在循環中進入! 而是將其初始化為“ false”。 您在內部的作業也放錯了位置。

為了使您的代碼正常工作-只需在以下時間內更改第二個條件

while (i<ade.length && !Prime)

while (i<ade.length && Prime)

根本不要將值存儲在變量中。 進行循環並在找到的第一個非素數值上返回false(如果發現一個非質數值,它們就不能全部為素數,沒有進一步處理的點),然后在循環后返回true(如果得到)那里都是素數)。

for (int i : ade) {
    if (!p.isPrime(i)) {
        return false;
    }
}
return true;

您的Prime變量初始化為true,而在條件中!Prime表示false。 您的while循環未執行,並且撤回了行,返回true。

以johnbk所說的為基礎:

boolean allPrimes(int[] ade){
        int i = 0; //counter
        boolean Prime = true; //initial boolean value
        while (i<ade.length){
            if (!p.isPrime(ade[i])) { //function which determines if an int is prime.
                Prime = false;
                break;
            }
            i=i+1;
        }
        return Prime;
}

那應該工作正常。 遍歷數組,當發現不是質數的數字時,請將Prime設置為false並退出循環。

我不是Java專家,但在我看來,您Prime的初始值應該為false,而不是true,否則您將永遠不會進入while循環。

由於Prime = true;您將永遠不會進入while循環Prime = true; 並且您正在檢查while(i<ade.length && !Prime) ,這意味着while (true && false) (假設ade中將包含一些值)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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