Как я могу получить значения из функции, которая находится внутри класса? - PullRequest
0 голосов
/ 23 декабря 2018

Я хочу получить некоторые значения из одной функции внутри другого класса и использовать ее в главном классе.Но похоже, что я делаю что-то не так.

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 ...и т.п.Но я получаю сообщение об ошибке "java: недостижимый оператор" в каждом операторе возврата, а также "java: пропущенный оператор возврата" в конце.Где я делаю неправильно?

Дополнительное примечание: я прошу прощения за локализованные имена переменных, так как это мое назначение класса оптимизации

Ответы [ 2 ]

0 голосов
/ 23 декабря 2018

Вы написали несколько операторов возврата в следующих строках:

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

Это недопустимо в Java.

Также вам не хватает возвращаемого значения в конце метода tabuза пределами цикла.Я вижу несколько логических ошибок в вашем коде.

Вам необходимо провести рефакторинг вашего кода, и если вы сможете объяснить, чего вы пытаетесь достичь, это будет гораздо яснее.

0 голосов
/ 23 декабря 2018

В java метод может иметь только один оператор возврата.Вы не можете иметь более одного оператора возврата для каждого метода, если только он не используется в блоке if-else.

Поскольку компилятор сообщает, что остальные операторы недоступны после первого оператора возврата.

Каксогласно вашему последнему комментарию вы можете создать класс-обертку для хранения нескольких значений, которые вы хотите вернуть.Например:

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;
}
...