此方法必须 return String 类型的结果,Java

This method must return a result of type String, Java

我是 Java 的新手。 Eclipse 给我错误

此方法必须return类型为

的结果

我想要 return 字符串 str,如果我将 str 放在所有 for 循环之后,我会得到未初始化的局部变量。我如何编码才能使

public String getQuadraticFactors() {

    String str;

    ArrayList<Integer> prFactors = new ArrayList<Integer>();

    ArrayList<Integer> qsFactors = new ArrayList<Integer>();

    ArrayList<Integer> p = getPRIntegerFactors(a), r = getPRIntegerFactors(a), q = getQSIntegerFactors(c),
            s = getQSIntegerFactors(c);

    System.out.println(p + "*********" + q);


    System.out.println(p.get(0));
    // String str2 = "jjjhljl";
    String str2 = "(" + p + "x + " + q + ")(" + r + "x +" + s + ")";



    for (int k = 0; k < p.size(); k++) {
        // System.out.print(k);
        for (int l = 0; l < q.size(); l++) {
            // System.out.print(k);
            for (int m = 0; m < p.size(); m++) {

                for (int n = 0; n < q.size(); n++) {

                    if (p.get(k) * r.get(m) == a && p.get(k) * s.get(n) + q.get(l) * r.get(m) == b
                            && q.get(l) * s.get(n) == c) {

                        System.out.println(a);
                        System.out.println(p.get(k) * r.get(m));
                        return str = "(" + p.get(k) + "x + " + q.get(l) + ")(" + r.get(m) + "x + " + s.get(n) + ")";    


                    }


                }

            }
        }

    }

}

您有可能永远不会达到您的 return 语句。要解决此问题,只需将 return 语句添加到方法的最底部,即 return 是一个空字符串或您要发送的任何值以表示

if (p.get(k) * r.get(m) == a && p.get(k) * s.get(n) + q.get(l) * r.get(m) == b
                        && q.get(l) * s.get(n) == c)

这个 if 语句在所有情况下都是错误的。有时您永远不会 运行 遇到此 if 语句为假的情况,但 JVM 只需要保证它有东西 return 如果它为假。

实际上,当您的一些 for 循环没有 运行 时,您需要有一个替代方案。只需用更好的值初始化您的 str ,在底部检查它。如果为 null 则抛出异常或对其进行初始化(取决于您的代码风格)。当你在返回之前检查它总是有一个值(或者你抛出一个异常)。