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
,并从禁忌方法返回它。这是一个非常好的主意。我一定会试试的。太好了!有没有一种方法可以从函数中得到多个变量而不是一个?有没有一种方法可以从函数中得到多个变量而不是一个?