[英]Multiply numbers in double array
我有一个双精度数组列表,我想将数字相乘,以便每个相乘的数字与其他因素不在同一行,并且乘积必须由每行的 1 个数字组成。 由于它是一个双 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
我将所有产品保存在一个新的数组列表中,因此数组列表应该保存
1,2,2,4,2,4,4,8
再次感谢!
如果您尝试过,您可能会意识到它很容易?
主意:
代码:
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 2.0 3.0 6.0 5.0 10.0 2.0 4.0 6.0 12.0 10.0 20.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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.