2016-05-29 2 views
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; 
     } 
    } 
    } 
} 

Так ошибка говорит, что есть недостающий оператор возврата (не уверен, какой сценарий у меня пропущенный). Но когда я добавляю оператор return в конце, он показывает, что оператор return недостижим. Я нашел полезный ответ здесь: Unreachable return statement still throws error, и я попытался поместить его в блок catch try, но он все еще запрашивает оператор return. Несмотря на то, что компилятор знает, что все, что я пишу в конце, избыточно, почему он все еще показывает ошибку?

+0

Этот метод не содержит инструкции 'return' для любой ветви. Возможно, проблема связана с вашим методом 'check'? Не могли бы вы включить его код? – Mureinik

+2

У вас должен быть оператор возврата в конце, если первое условие if является ложным. Ваша жизнь будет проще, если вы используете правильный отступ. – Eran

+0

Код переходит в этот метод, только если проверка не равна -1. Должен ли я опубликовать весь код? – Rohinb97

ответ

1

Если ваш первый чек check(s, k) возвращает -1 тогда вы ничего

1

Первый, если блок не имеет еще ...

если (проверка (s, к) = - 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; }

Я предлагаю, используя IDE, как ес не возвращать lipse, это поможет вам определить эти вещи. Это буквально добавило это заявление для меня.

+0

Ну, я использую Eclipse, но я прямо кодировал его на codechef, поэтому я стал ленивым и не добавлял отступов – Rohinb97

 Смежные вопросы

  • Нет связанных вопросов^_^