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