本文介紹了在Java中使用If/Else返回布爾值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在嘗試編寫代碼來檢查某個數字是否為質數,如果它是質數,則使用if/Else語句返回true
。
我給出了以下代碼,我已經寫好了。
它始終顯示異常";Missing Return Statement&Quot;。
class Main
{
static boolean isPrime(int x)
{
for(int i = 2;i <= x/2;++i)
{
if(x%i == 0)
{
return false;
}
else
{
return true;
}
}
}
public static void main (String args[])
{
boolean prime = isPrime(11);
System.out.println(prime);
}
}
推薦答案
代碼中的問題是,您第一次返回的模數不是0。這是錯誤的,因為您必須確保x
不能被范圍[2, x/2]
中的任何數字整除。
按如下方式修改您的方法:
static boolean isPrime(int x)
{
if(x <= 1)
{
return false;
}
boolean ret = true;
for(int i = 2;i <= x/2;++i)
{
if(x%i == 0)
{
ret = false;
break;
}
}
return ret;
}
這樣,只要你確定這個數不是質數,你就中斷。如果它是素數,它將完成循環,而不會找到非零余數。
x<=1
場景是您遇到警告的原因,因為對于那些輸入,您的方法在沒有遇到return
語句的情況下退出。我剛在函數開始時檢查了此條件。
查找素數
我只是建議了isPrime
實現的修復方法,這是查找質數的最簡單方法。無論如何,有更聰明的方法來找到它們:
Siege of Eratosthenes方法
可以只檢查奇數,節省一半的時間
您可以檢查x
是否屬于6*x±1
集合。事實上,數字5中的所有質數都遵循這個規則
這篇關于在Java中使用If/Else返回布爾值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,