[英]Method to calculate prime numbers - [JAVA]
我需要構建一個計算家庭作業素數的方法。 我實施了我的教授提出的算法,但它不起作用。
Eclipse給出了消息: The local variable prime may not have been initialized
且無法編譯。
有人能幫我嗎?
public static boolean itsPrime(int nbTest){
boolean prime;
if (nbTest <= 1){
prime = false;
} else if (nbTest == 2){ // Two is the only even number that is prime
prime = true;
} else if ((nbTest != 2) && (nbTest % 2 == 0)){ // If it's even and different than two it is not prime
prime = false;
} else {
for(int i = 3; i <= Math.sqrt(nbTest); i = i+2){
if (nbTest % i == 0){
prime = false;
} else {
prime = true;
}
}
}
return prime;
}
只需在聲明變量時初始化它。 例如
boolean prime = false;
您沒有在代碼中初始化變量prime
。 通過查看它,您看到if語句的每個分支都為prime
賦值。 但是,有一個例外情況,如果for
循環沒有被執行怎么辦? 那么prime
的價值是未知的! 這就是錯誤出現的原因。
我想如果循環沒有被執行則要返回false
,所以只需在聲明時使用false
初始化prime
:
boolean prime = false;
為了使您的代碼更好,而不是僅僅為prime
指定值,您只需返回! 讓我告訴你完整的代碼:
public static boolean itsPrime(int nbTest){
boolean prime = false;
if (nbTest <= 1){
return false;
} else if (nbTest == 2){ // Two is the only even number that is prime
return false;
} else if ((nbTest != 2) && (nbTest % 2 == 0)){ // If it's even and different than two it is not prime
return false;
} else {
for(int i = 3; i <= Math.sqrt(nbTest); i = i+2){
if (nbTest % i == 0){
prime = false;
} else {
prime = true;
}
}
}
return prime;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.