2017-05-18 3 views
4

私はintプロトタイプを持つ1つの方法を書いています。しかし、このメソッドはエディタでエラーを表示しています。return文 return文がすでに存在しています。私は別のリターンを追加するときにうまくいきます。私は日食で書いています。return文のエラーメッセージ。

private static int nextPrime(int n) { 
     if(n % 2 == 0) 
      n++; 
     for(; !isPrime(n); n+=2) 

     return n; 
     return n; 
    } 

が間違ってここに起こっている:

は、ここに私のコードです。手伝ってくれてありがとう。

+0

...それはボディのあなたのループがないようだ...あなたは常にループに入ること自体が

を証明することはできませんすべての出口経路は、int型を返す必要があります。あなたは 'for'サイクル(これまでの唯一の復帰を持っていた)を入力することはできません。したがって、 'for'を入力しなかった場合、戻り値はなく、常に値を持たなければなりません。 –

答えて

3

私の問題は、あなたのforループにボディがないことだと思います。それを1つずつ与えてみてください。

private static int nextPrime(int n) { 
    if(n % 2 == 0) 
     n++; 
    for(; !isPrime(n); n+=2) { } 

    return n; 
} 

しかし、実際に、私はforループは、このためのループの間違った種類だと思います。代わりに、あなたはwhileループを使用することがあります:

private static int nextPrime(int n) { 
    if (n % 2 == 0) 
     n++; 

    while (!isPrime(n)) { 
     n += 2; 
    } 

    return n; 
} 
+0

はい、それは動作しています...私はここからhttp://www.sanfoundry.com/java-program-implement-hash-tables/を練習していますので、何か不足しています。 –

3

最初returnはあなたがすべての上のことを確認しなければならないとして、関数の最後に1を入れて、コンパイラ力、ループの範囲にありますパスの復帰が行われ、コンパイラ悲しいかな

+0

はい私も同じことを持っています。ありがとう –