如何避免这样的错误"此方法必须返回int"的类型结果?

时间:2014-11-26 18:13:14

标签: java methods compiler-errors

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]);
        }
    }
}

2 个答案:

答案 0 :(得分: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 :(得分:0)

如果a为空String,则您的方法永远不会到达return语句,因此会出错。

您必须确保您的方法在所有情况下都返回一个值。