如何从类内部的函数中获取值?

时间:2018-12-23 11:09:50

标签: java function class return

我想从不同类内部的一个函数中获取一些值,并将其用于Main类。但似乎我做错了事。

public class test {

public static int enkucukbul ( double[] x){ // this method finds the smallest index
    return IntStream.range(0, x.length)
            .mapToObj(i -> i)
            .min(Comparator.comparing(i -> x[i]))
            .orElse(Integer.MIN_VALUE);
}


public static double tabu(double x, int isayi) {

    Random rrandom = new Random();

    float r;


    double[] fxdizi = new double[4];      
    double[] xdizi = new double[4];       
    double[] hareket = new double[4];     


    for (int j = 0; j < isayi; j++) {

        r = rrandom.nextFloat(); 


        hareket[0] = x + 2 * r; 
        hareket[1] = x + 4 * r;
        hareket[2] = x - 2 * r;
        hareket[3] = x - 4 * r;

        xdizi[0] = hareket[0]; 
        xdizi[1] = hareket[1];
        xdizi[2] = hareket[2];
        xdizi[3] = hareket[3];

        for (int i = 0; i < 4; i++) {

            if (xdizi[i] <= 1) {
                fxdizi[i] = xdizi[i] * xdizi[i];
            } else {
                fxdizi[i] = Math.pow((xdizi[i] - 3), 2) - 3;
            }

        } // for dongusu


        int minIndex = enkucukbul(fxdizi); // found the smallest index

        return x;
        return minIndex;
        return j;
        return xdizi[minIndex];
        return fxdizi[minIndex];

        x = xdizi[minIndex]; // we found the smallest x


    }  // all things

 }
}

也是我的主班:

public class Main {

public static void main(String[] args) {

    test ts = new test();
    System.out.println(ts.tabu(7.26,2));

 }
}

我只想在x,j等返回语句中获取值。但是我在每个return语句上都得到错误“ java:unreachable statement” ,最后还得到了“ java:missing return statement” 。我在哪里做错了?

附加说明:很抱歉,因为这是我的优化类分配,所以使用了本地化的变量名

2 个答案:

答案 0 :(得分:1)

在Java中,一个方法只能有一个返回语句。除非在if-else块中使用,否则每个方法最多只能有一个return语句。

编译器告诉您,在第一个return语句之后,其余语句将无法访问。

根据您的最新注释,您可以创建一个包装器类来保存要返回的多个值。例如:

class Calculation {
    public double a;
    public double b;

    // getters and setters

}

现在从您的方法中,您可以捕获变量的值,然后将它们存储在上面创建的类的对象中:

public static Calculation tabu(double x, int y) {
    Calculation cal = new Calculation();

    // do something with x and y and other things

    cal.setA(x);
    cal.setB(y);

    return cal;
}

答案 1 :(得分:1)

您已在以下几行中编写了多个return语句:

return x;
return minIndex;
return j;
return xdizi[minIndex];
return fxdizi[minIndex];

在Java中是不可接受的。

在for循环之外,方法tabu的结尾还缺少返回值。我在您的代码中看到了一些逻辑错误。

您需要重构代码,同样,如果您可以解释要实现的目标,将会更加清楚。