Вот отрывок из моего кода:Застрял в петле ошибок: недостижимое заявлении и нет возврата заявления при условии
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. Несмотря на то, что компилятор знает, что все, что я пишу в конце, избыточно, почему он все еще показывает ошибку?
Этот метод не содержит инструкции 'return' для любой ветви. Возможно, проблема связана с вашим методом 'check'? Не могли бы вы включить его код? – Mureinik
У вас должен быть оператор возврата в конце, если первое условие if является ложным. Ваша жизнь будет проще, если вы используете правильный отступ. – Eran
Код переходит в этот метод, только если проверка не равна -1. Должен ли я опубликовать весь код? – Rohinb97