将数字乘以双数组

时间:2015-06-10 06:57:56

标签: java arraylist

我有一个双数组的双精度数组,我想将这些数字相乘,这样每个乘以的数字与其他因子不在同一行,产品必须由每行的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

再次感谢!

2 个答案:

答案 0 :(得分:0)

如果你已经尝试过,你可能会意识到这很容易吗?

<强>观

  • 按项
  • 循环遍历每个ArrayList项
  • 这些项目的产品添加到ArrayList

<强>代码:

$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