Застрял в цикле ошибок: недостижимый оператор и оператор возврата не предоставляется

Вот фрагмент моего кода:

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 недоступен. Я нашел полезный ответ: недостижимый оператор возврата по-прежнему выдает ошибку, и я попытался поместить его в блок try catch, но он все еще запрашивает оператор возврата. Несмотря на то, что компилятор знает, что все, что я пишу в конце, является избыточным, почему он все еще показывает ошибку?

3 ответа

Решение

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

Первый, если у Блока больше нет...

если (! проверка (s, к) = - 1) {

......}

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, как Eclipse, это поможет вам определить эти вещи. Это буквально добавило утверждение для меня.

Другие вопросы по тегам