Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从类内部的函数中获取值?_Java_Function_Class_Return - Fatal编程技术网

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

Java 如何从类内部的函数中获取值?,java,function,class,return,Java,Function,Class,Return,我想从不同类中的一个函数中获取一些值,并在主类中使用它。但我好像做错了什么 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.compar

我想从不同类中的一个函数中获取一些值,并在主类中使用它。但我好像做错了什么

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

 }
}
我只想得到返回语句中的值,比如x,j…等等。但是我在每个返回语句中都会出现错误“java:unreachable statement”,最后还会出现“java:missing return statement”。我哪里做错了


额外注意:我对本地化变量名感到抱歉,因为这是我的优化类赋值

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

正如编译器告诉您的,在第一个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;
}

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

正如编译器告诉您的,在第一个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;
}

您已经在以下行中编写了多个返回语句:

return x;
return minIndex;
return j;
return xdizi[minIndex];
return fxdizi[minIndex];
这在java中是不可接受的

此外,在for循环外部的方法
tabu
的末尾缺少返回值。我看到你的代码中有几个逻辑错误


你需要重构你的代码,如果你能解释你想要实现的目标,它会更加清晰。

你已经在以下几行中编写了多个返回语句:

return x;
return minIndex;
return j;
return xdizi[minIndex];
return fxdizi[minIndex];
这在java中是不可接受的

此外,在for循环外部的方法
tabu
的末尾缺少返回值。我看到你的代码中有几个逻辑错误


你需要重构你的代码,如果你能解释你想要实现什么,它会更清晰。

函数是静态的。您应该使用test.batu()调用它们,而不创建类test的对象。或从函数中删除“static”。+您不能像以前那样返回多个值。作为旁白,1)每当遇到使用
mapToObj
并返回与输入参数相同的值时,您应该使用
boxed()
。2) 在源数组为空的情况下返回
Integer.MIN_值是可以的,但我会尝试按照返回
-1
的典型方法。3) 在比较基元双精度时,首选
comparingDouble
而不是
comparing
,因为这样效率更高<代码>返回IntStream.range(0,x.length).boxed().min(Comparator.comparingDouble(i->x[i])).orElse(-1)函数是静态的。您应该使用test.batu()调用它们,而不创建类test的对象。或从函数中删除“static”。+您不能像以前那样返回多个值。作为旁白,1)每当遇到使用
mapToObj
并返回与输入参数相同的值时,您应该使用
boxed()
。2) 在源数组为空的情况下返回
Integer.MIN_值是可以的,但我会尝试按照返回
-1
的典型方法。3) 在比较基元双精度时,首选
comparingDouble
而不是
comparing
,因为这样效率更高<代码>返回IntStream.range(0,x.length).boxed().min(Comparator.comparingDouble(i->x[i])).orElse(-1)我想得到我在顶部声明的值,并在我的主类中使用它。我的主要目标是将它们列在某种JTable上。因此,我知道您希望返回所有变量,为什么不定义一个类来包装变量并从tabu方法返回单个对象?将变量移动到一个类中,用于ex.
CalculationResult
,并从禁忌方法返回它。这是一个非常好的主意。我一定会试试的。太好了!我想得到我在顶部声明的值,并在我的主类中使用它。我的主要目标是将它们列在某种JTable上。因此,我知道您希望返回所有变量,为什么不定义一个类来包装变量并从tabu方法返回单个对象?将变量移动到一个类中,用于ex.
CalculationResult
,并从禁忌方法返回它。这是一个非常好的主意。我一定会试试的。太好了!有没有一种方法可以从函数中得到多个变量而不是一个?有没有一种方法可以从函数中得到多个变量而不是一个?