繁体   English   中英

计算素数的方法 - [JAVA]

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM