尝试在此处调用一个方法(以便使用for循环生成100次不同的结果)
以下是我在主要方法中的内容:
for (int i = 0; i<99; i++) {
double scaleFitness = ScalesSolution.ScalesFitness(randomNumberFile);
System.out.print(scaleFitness + ", ");
}
这是我试图调用100次的方法(在ScalesSolution类中):
public static double ScalesFitness(ArrayList<Double> weights)
{
int n = scasol.length();
double lhs = 0.0, rhs = 0.0;
if (n > weights.size()) return(-1);
for(int i = 0; i < n; i++){
if(scasol.charAt(i) == '0'){
lhs += weights.get(i);
}
else if (scasol.charAt(i) == '1') {
rhs += weights.get(i);
}
}
return(Math.abs(lhs-rhs));
}
然而,这会打印100次相同的值。
答案 0 :(得分:3)
您的方法“ScaleFitness”和此方法的输出取决于两个变量:
权重
scasol
似乎这些变量在整个程序运行中保持不变。所以你的输出是相同的并不奇怪。
如果您想为循环的每次运行提供不同的输出。您需要将这些变量中的至少一个重置为新值。
顺便说一下。 Java中的方法总是以小写字母开头。类以大写字母开头。
答案 1 :(得分:0)
public static double scalesFitness(ArrayList<Double> weights)
{
double randomElement = weights[((int) (Math.random() * weights.size()))];
这将使您能够检索数组中的随机元素,以便稍后进行操作。