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

时间:2015-11-27 23:31:58

标签: java eclipse quadratic

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

此方法必须返回类型

的结果

我想返回String str,如果我在所有for循环之后放入str,我会得到未初始化的局部变量。我怎么能这样编码呢

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) + ")";    


                    }


                }

            }
        }

    }

}

2 个答案:

答案 0 :(得分:0)

您可能永远不会点击您的退货声明。要解决此问题,只需在方法的最底部添加一个return语句,该语句返回一个空字符串或您要发送的任何值,以表示

 private void scaleAndUnscale() {
    ScaleAnimation scal_grow = new ScaleAnimation(0, 1.2f, 0, 1.2f, Animation.RELATIVE_TO_SELF, (float) 0.5, Animation.RELATIVE_TO_SELF, (float) 0.5);
    scal_grow.setDuration(1500);
    scal_grow.setFillAfter(true);

    image1.startAnimation(scal_grow);

    scal_grow.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {

            ScaleAnimation unscal_grow = new ScaleAnimation(1.2f, 1.0f, 1.2f, 1.0f, Animation.RELATIVE_TO_SELF, (float) 0.5, Animation.RELATIVE_TO_SELF, (float) 0.5);
            unscal_grow.setDuration(1500);
            unscal_grow.setStartOffset(1500);
            unscal_grow.setFillAfter(true);

            image1.startAnimation(unscal_grow);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });
}

此if语句对于所有情况都是false。有时候你永远不会遇到这个if语句是假的情况,但是JVM只需要保证如果它是假的话就有东西要返回。

答案 1 :(得分:0)

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