我想从不同类内部的一个函数中获取一些值,并将其用于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” 。我在哪里做错了?
附加说明:很抱歉,因为这是我的优化类分配,所以使用了本地化的变量名
答案 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
的结尾还缺少返回值。我在您的代码中看到了一些逻辑错误。
您需要重构代码,同样,如果您可以解释要实现的目标,将会更加清楚。