我有这个方法:
public static double[] averages(double[]... input) {
double[] result = new double[input.length];
for(int i = 0; i< result.length; i++) {
result[i] = Arrays.stream(input[i]).average().getAsDouble();
}
return result;
}
我不知道我应该切换到这个方法有多少双数组。如何使用for循环将所有变量double []添加到方法中?
在这种情况下我:
ArrayList<double[]> sim=new ArrayList<double[]>();
arrays.add(new double[]{0.25,0.97,0.47,0.31,0.71});
arrays.add(new double[]{0.51,0.91,0.88,0.12,0.15});
arrays.add(new double[]{0.47,0.71,0.42,0.17,0.71});
arrays.add(new double[]{0.41,0.55,0.53,0.64,0.81});
arrays.add(new double[]{0.91,0.14,0.71,0.11,0.61});
但不幸的是,在运行程序之前我不知道数组double []。
我应该去方法averages()在ArrayList“sim”
中出现5个双数组我应该得到这样的东西:
averages(arrays.get(0),arrays.get(1),arrays.get(2),arrays.get(3),arrays.get(4))
但内容dell'ArrayList“sim”在执行之前我不知道!
答案 0 :(得分:1)
首先,你可能写错了,不是吗?
sim.add(new double[]{0.25,0.97,0.47,0.31,0.71});
会更加明显。
然后你可以按如下方式调用你的方法:
double[] results = averages(sim.toArray(new double[]{}));
我没有尝试运行它,新数组就在那里,因为方法toArray()
由于某种原因返回Object[]
而不是T[]
。
答案 1 :(得分:0)
正如我在评论中所说,我并没有真正得到你的问题。但我想你想把你的平均值方法称为 -
ArrayList<double[]> sim = new ArrayList<double[]>();
sim.add(averages(new double[]{0.25,0.97,0.47,0.31,0.71}));
sim.add(averages(new double[]{0.51,0.91,0.88,0.12,0.15}));
sim.add(averages(new double[]{0.47,0.71,0.42,0.17,0.71}));
sim.add(averages(new double[]{0.41,0.55,0.53,0.64,0.81}));
sim.add(averages(new double[]{0.91,0.14,0.71,0.11,0.61}));
答案 2 :(得分:0)
我认为OP问题是:
“我必须做一些事情()到双打数组的列表,但我不知道这样的列表的大小。我怎样才能添加双打数组 列表中有一个(for)循环?“
如果我做对了,你必须要了解的第一件事是你的循环应该结束的条件。由于您不知道列表的大小,因此for循环不是您所需要的。您应该使用其他循环,例如具有众所周知的结束条件的while loop。
告诉我们这些双打阵列的来源,也许我们可以为您提供更多帮助。
对于doSomething()部分,例如计算每个数组的avarage并将其放在另一个数组中,假设一切正常,调用
averages(arrays.get(0),arrays.get(1),arrays.get(2),arrays.get(3),arrays.get(4))
应该成为
averages(sim)
使用这样的方法
public static double[] averages(List<double[]> input) {
double[] result = new double[input.size()];
int i=0;
for(double[] doubleArray: input) {
result[i++] = Arrays.stream(doubleArray).average().getAsDouble();
}
return result;
}