簡體   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