5

の for ループでデッド コードの警告が表示されますi++。なぜ私はそれを得るのですか、どうすればこの問題を解決できますか?

public static boolean Method(int p) {
    for(int i = 2; i < p; i++) {  // here is the problem, at i++
        if(p % i == 0);         
            return false;
    }
    return true;    
}
4

4 に答える 4

13

常にすぐにループを終了するため、iインクリメントされることはありません。

    if(p % i == 0);         
        return false;

する必要があります

    if(p % i == 0)       
        return false;

最初のバージョンでは、if ステートメントの後に空の句があります (最初のセミコロンのため)。その結果、return false常に実行されます。メソッドを終了すると、i++never が実行されます。

于 2012-12-24T11:35:58.573 に答える
7

ifステートメントの後のセミコロンを削除します。

于 2012-12-24T11:36:08.073 に答える
3

問題は次の行にあります。

if(p % i == 0); 

セミコロンを削除して、もう一度やり直してください

于 2012-12-24T11:36:34.440 に答える
1

コードが展開されると、次のようになります

     public static boolean Method(int p) {
        for(int i = 2; i < p; i++) {  // here is the problem, at i++
            if(p % i == 0)
            {

            }
           return false; //If you give return statement here then how it will work.
        }
        return true;    
    }
于 2012-12-24T12:07:16.947 に答える