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