我有一个双数组的双精度数组,我想将这些数字相乘,这样每个乘以的数字与其他因子不在同一行,产品必须由每行的1个数字组成。由于它是双arrayList,因此存在不同长度的行。任何帮助表示赞赏。
假设这是arraylist
1.0,2.0
1.0,2.0
1.0,2.0
数学计算如1 * 1 * 1,1 * 1 * 2,1 * 2 * 1,1 * 2 * 2,2 * 1 * 1,2 * 1 * 2,2 * 2 * 1,2 * 2 * 2
我将所有产品保存在新的arraylist中,因此arraylist应该保留
1,2,2,4,2,4,4,8
再次感谢!
答案 0 :(得分:0)
如果你已经尝试过,你可能会意识到这很容易吗?
<强>观强>
<强>代码:强>
$scope.setSelected = function(index) {
angular.forEach($scope.morningtimes, function(item) {
item.selected = false;
})
$scope.morningtimes[index].selected = true;
}
<强>输出:强>
import java.util.ArrayList;
public class QuickTester {
public static void main(String[] args) {
ArrayList<Double> list1 = new ArrayList<Double>();
ArrayList<Double> list2 = new ArrayList<Double>();
ArrayList<Double> list3 = new ArrayList<Double>();
list1.add(1.0);
list1.add(2.0);
list2.add(1.0);
list2.add(3.0);
list2.add(5.0);
list3.add(1.0);
list3.add(2.0);
int productListSize = list1.size() *
list2.size() * list3.size();
ArrayList<Double> productsList =
new ArrayList<Double>(productListSize);
for(double i : list1) {
for(double j : list2) {
for(double k : list3) {
productsList.add(i * j * k);
}
}
}
for(double d : productsList) {
System.out.print(d + " ");
}
}
}
答案 1 :(得分:0)
使用递归方法:
import java.util.ArrayList;
import java.util.List;
public class DoubleArrayMultiplyRecursion {
public static void recurMultiply(List<Double> list, double[][] array, int row,
double result) {
if (row < 3) {
for (int j = 0; j < 2; j++) {
result *= array[row][j];
recurMultiply(list, array, row+1, result);
}
} else {
System.out.println(result);
list.add(result);
}
}
public static void main(String[] args) {
double[][] array = new double[3][2];
for (int i = 0; i < 3; i++) {
array[i][0] = 1.0;
array[i][1] = 2.0;
}
List<Double> list = new ArrayList<Double>();
recurMultiply(list, array, 0, 1);
for(Double d: list) {
System.out.print(d+",");
}
}
}
输出:
1.0 // from recursion processing
2.0
2.0
4.0
2.0
4.0
4.0
8.0 // from recursion processing
1.0,2.0,2.0,4.0,2.0,4.0,4.0,8.0, // from result list