Java 大型arraylist,查找一定数量元素的乘积

Java 大型arraylist,查找一定数量元素的乘积,java,Java,我有一个数组列表,其中包含下面的数字,我试图做的是找到每16个数字的乘积 try { for (int z = 0; z < 1000; z++) { System.out.println(list.subList(z, z + 16)); 我的解决方案是将上面的每一行放入一个数组中,并找到该数组的乘积。然而,我被卡住了,如果有人能为我提供一些关于如何在这个数组中成功的建议,我会非常高兴 list

我有一个数组列表,其中包含下面的数字,我试图做的是找到每16个数字的乘积

          try {
                for (int z = 0; z < 1000; z++) {
            System.out.println(list.subList(z, z + 16));
我的解决方案是将上面的每一行放入一个数组中,并找到该数组的乘积。然而,我被卡住了,如果有人能为我提供一些关于如何在这个数组中成功的建议,我会非常高兴

        list.subList(z, z + 16);
              for(int i = 0; i < list.subList(z, z+16).size();i++){
                Ar[i] = list.get(z);
            }
list.subList(z,z+16);
for(int i=0;i
73167176531330624919225119674265742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 30358907296290491560440772390713810515859307960866 70172427121883998797908792274921901699720888093776 65727333001053367881220235421809751254540594752243 52584907711670556013604839586446706324415722155397 53697817977846174064955149290862569321978468622482 83972241375657056057490261407972968652414535100474 82166370484403199890008895243450658541227588666881 16427171479924442928230863465674813919123162824586 17866458359124566529476545682848912883142607690042 24219022671055626321111109370544217506941658960408 07198403850962455444362981230987879927244284909188 84580156166097919133875499200524063689912560717606 05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450这是我提出的解决方案。您可以将答案添加到数组或其他东西中,以后再使用,而不是打印答案。仅供参考,我将0分为1,因此我知道它正在工作

    public static void main(String[] args) throws Exception
    {
        int[] arr = {7, 3, 1, 6, 7, 1, 7, 6, 5, 3, 1, 3, 3, 1, 6, 2, 3, 1, 6, 7, 1, 7, 6, 5, 3, 1, 3, 3, 1, 6, 2, 4, 1, 6, 7, 1, 7, 6, 5, 3, 1, 3, 3, 1, 6, 2, 4, 9};

        int counter = 0;
        int product = 1;
        for (int i : arr)
        {
            if (counter < 16)
            {
                product *= i;
                counter++;
            }

            if (counter >= 16)
            {
                System.out.println(product);
                product = 1;
                counter = 0;
            }
        }
    }

如果您有
ArrayList
ArrayList
,那么您可以这样做

 ArrayList <ArrayList> listofList = new ArrayList ();

for (int z = 0; z < 1000; z = z + 16) {

     int endpoint = z + 16;  // check to see not bigger than 1000
     ArrayList thisList = list.subList(z, endpoint);
     listOfList.add (thisList);
     System.out.println(thisList);
}

如果您查看正在显示的打印输出,您会发现每次只移动一个数字,而不是您想要的。

只是检查一下。如果你有像1,2,3…32这样的东西,你会有两种产品吗,一种是1~16,另一种是17~32?或者你会有一个1~16人的,另一个2~17人的,依此类推?如果它是最新的,也许你可以存储中间结果,因为2~17的乘积基本上是1~16 x 17的乘积……我必须找到16个连续数字的最大乘积,所以我所拥有的就是我所需要的。感谢您的建议,我的解决方案为您提供了计算每16个连续数字乘积的方法。那么你的问题是什么呢?我回答说“如果你看你正在显示的打印输出,你会发现它每次只移动一个数字,而不是你想要的。”
60011280
34292160
102876480
 ArrayList <ArrayList> listofList = new ArrayList ();

for (int z = 0; z < 1000; z = z + 16) {

     int endpoint = z + 16;  // check to see not bigger than 1000
     ArrayList thisList = list.subList(z, endpoint);
     listOfList.add (thisList);
     System.out.println(thisList);
}
ArrayList thisList = list.subList(z, endpoint);
int prod = 1;
for (int x : thisList) {
   prod *= x;
}