本文介紹了在Java中使用If/Else返回布爾值的處理方法,對大家解決問題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我正在嘗試編寫代碼來檢查某個數(shù)字是否為質(zhì)數(shù),如果它是質(zhì)數(shù),則使用if/Else語句返回true
。
我給出了以下代碼,我已經(jīng)寫好了。
它始終顯示異常";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);
}
}
推薦答案
代碼中的問題是,您第一次返回的模數(shù)不是0。這是錯誤的,因?yàn)槟仨毚_保x
不能被范圍[2, x/2]
中的任何數(shù)字整除。
按如下方式修改您的方法:
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;
}
這樣,只要你確定這個數(shù)不是質(zhì)數(shù),你就中斷。如果它是素?cái)?shù),它將完成循環(huán),而不會找到非零余數(shù)。
x<=1
場景是您遇到警告的原因,因?yàn)閷τ谀切┹斎耄姆椒ㄔ跊]有遇到return
語句的情況下退出。我剛在函數(shù)開始時檢查了此條件。
查找素?cái)?shù)
我只是建議了isPrime
實(shí)現(xiàn)的修復(fù)方法,這是查找質(zhì)數(shù)的最簡單方法。無論如何,有更聰明的方法來找到它們:
Siege of Eratosthenes方法
可以只檢查奇數(shù),節(jié)省一半的時間
您可以檢查x
是否屬于6*x±1
集合。事實(shí)上,數(shù)字5中的所有質(zhì)數(shù)都遵循這個規(guī)則
這篇關(guān)于在Java中使用If/Else返回布爾值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,