2016-05-29 16 views
0

ありませんreturn文は、私のコードの抜粋です:エラーのループに陥っ:到達不能文と、ここで

public static int dc (String s,int k, int c){ 
    String s1, s2; 
    int m, n; 
    if (check(s, k) != -1) { 
    int p = check(s, k); 
    c++; 
    s1 = s.substring(0, p) + s.substring(p + 1); 
    s2 = s.substring(0, p + 1) + s.substring(p + 2); 
    if ((check(s1, k) == -1) || (check(s2, k) == -1)) { 
     return c; 
    } else { 
     m = dc(s1, k, c); 
     n = dc(s2, k, c); 
     if (m > n) { 
     return n; 
     } else { 
     return m; 
     } 
    } 
    } 
} 

ので、エラーが不足しているreturn文があることを述べている(ではない私が持っているシナリオを確認してください逃した)。しかし、最後にreturnステートメントを追加すると、returnステートメントが到達不能であることが示されます。私はここで役に立つ答えを見つけました:Unreachable return statement still throws errorと私はtry catchブロックに入れようとしましたが、それでもreturn文を要求します。コンパイラは、最後に書いたものが重複していることを知っていますが、なぜそれでもエラーを表示していますか?

+0

このメソッドは、どのブランチでも 'return'ステートメントが欠けていません。おそらく問題はあなたの 'check'メソッドにありますか?そのコードを含めることができますか? – Mureinik

+2

最初のif条件がfalseの場合、最後にreturnステートメントが必要です。適切なインデントを使用すると、あなたの人生はより簡単になります。 – Eran

+0

checkが-1でない場合にのみ、このメソッドにコードが入ります。コード全体を投稿する必要がありますか? – Rohinb97

答えて

1

あなたの最初のチェックcheck(s, k)-1を返すなら、あなたは、私は、ECのようなIDEを使用することをお勧め

1

最初のブロックは他持っていない場合...

(チェック(S、K)=! - 1)であれば{

......}

0

public static int dc(String s, int k,int c){ String s1,s2; int m,n; if(check(s,k)!=-1) { int p=check(s,k); c++; s1=s.substring(0,p)+s.substring(p+1); s2=s.substring(0,p+1)+s.substring(p+2); if((check(s1,k)==-1)||(check(s2,k)==-1)){ return c; } else{ m=dc(s1,k,c); n=dc(s2,k,c); if(m>n){ return n; } else{ return m; } } } // MISSING RETURN BELOW return n; }

何も返しませんあなたがこれらのものを見つけるのを助けるでしょう。それは文字どおり私のための声明を追加しました。

+0

私はEclipseを使用していますが、私はコーデックフで直接コーディングしていましたので、私は怠惰になり、インデントを追加しませんでした – Rohinb97

関連する問題