Как избежать ошибки типа «Этот метод должен возвращать результат типа int»?

1
import java.util.*;

public class Main
{
    public static int countInversions(String a)
    {
        int res = 0;
        int n = a.length();
        for (int i = 0; i < n; i++)
        {
            for (int j = i + 1; j < n; j++)
            {
                if(a.charAt(i) > a.charAt(j))
                    res++ ;
            }
            return res;
        }
    }
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int m = in.nextInt();
        String[] dna = new String[m];

        for(int i = 0; i < m; i++)
        {
            dna[i] = in.next();
        }
        Arrays.sort(dna, new Comparator<String>() {
            @Override
            // <0 if a < b, 0 if a == b, > 0 if a > b
            public int compare(String a, String b)
            {
                return countInversions(a) - countInversions(b);
            }
        });
        for (int i = 0; i < n; i++) {
        System.out.println(dna[i]);
        }
    }
}
  • 3
    Что произойдет с вашим методом countInversions если вы дадите ему пустую String "" ? Что это возвращает?
  • 0
    Я откатил ваш вопрос, так как казалось, что вы добавляете в него новый. Если у вас есть другой вопрос, не стесняйтесь задавать новый вопрос.
Теги:
methods
compiler-errors

2 ответа

3
Лучший ответ

Просто разместите оператор return в самом конце метода:

public static int countInversions(String a) {
    int res = 0;
    int n = a.length();
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a.charAt(i) > a.charAt(j))
                res++;
        }
    }
    return res;
}

Это обеспечит возврат res даже если строка пуста.

  • 1
    Это, вероятно, правильно - не в последнюю очередь потому, что кажется маловероятным, что ОП хочет рассмотреть только случай, когда i = 0 . Если в строке n символов, мы, вероятно, захотим выполнить внешний цикл n раз; чего и добивается это решение.
0

Если a является пустой String, ваш метод никогда не достигает оператора return, следовательно, ошибки.

Вы должны убедиться, что ваш метод возвращает значение во всех случаях.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню