java—循环数组以对值进行分组以获得总计

hxzsmxv2  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(289)

如何编写一个for循环来遍历一个数组并将它分成6个组。从这里开始,它应该在arr数中加上第一个组,然后加上第二个组,但是倒转,所以{6,5,4,3,2,1}到第一个组,即{1,2,3,4,5,6},然后第三个组不应该倒转,但是如果还有另一个6组,那么这个集合应该倒转为加法。我不知道该怎么办。任何帮助都将不胜感激。下面是我的尝试

import java.util.Arrays;

public class arrayAdding{

     public static void main(String []args){
        int[] arrNumbers = new int[] { 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6 };
        int[] newArrNumbers = new int[6];

        for(int i  = 0; i < arrNumbers.length ; i++){
            newArrNumbers[i < 6 ? i : (6 - (i % 6) - 1)] += arrNumbers[i];
        }
        System.out.println(Arrays.toString(newArrNumbers));
     }
}

我的代码的实际结果:

newArrNumbers = [13, 12, 11, 10, 9, 8]

要求的结果应为:

newArrNumbers = [8, 9, 10, 11, 12, 13]
8wtpewkr

8wtpewkr1#

您可以参考以下代码:

import java.util.*;

公共类排列添加{

public static void main(String []args){
    Integer[] arrNumbers = new Integer[] { 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6 };
    int[] newArrNumbers = new int[6];
    List<List<Integer>> partitions = ArrayAdding.splitArray(arrNumbers);

    Iterator<List<Integer>> itr = partitions.iterator();
    while (itr.hasNext()) {
        List<Integer> next = itr.next();
        if (next.size() < 6 )
            itr.remove();
    }

    for(int i  = 0; i < partitions.size() ; i++){
        if (i % 2 != 0) {
            Collections.reverse(partitions.get(i));
        }
    }

    for (List<Integer> partition : partitions) {
        for (int j = 0; j < 6; j++) {
            newArrNumbers[j] = partition.get(j) + newArrNumbers[j];
        }
    }
    System.out.println(Arrays.toString(newArrNumbers));
}

private static List<List<Integer>> splitArray(Integer[] arrNumbers) {
    int partitionSize = 6;
    List<List<Integer>> partitions = new LinkedList<>();
    List<Integer> originalList = Arrays.asList(arrNumbers);
    for (int i = 0; i < originalList.size(); i += partitionSize) {
        partitions.add(originalList.subList(i,
                Math.min(i + partitionSize, originalList.size())));
    }
    return partitions;
}}
xn1cxnb4

xn1cxnb42#

你可以像一组12个元素一样思考,前6个元素不反转,后6个元素反转。 (i % 12) < 6 -上半场-
i % 6 (i % 12) >= 6 -下半场(逆转)- (6 - (i % 6) - 1) 代码:

newArrNumbers[(i % 12) < 6 ? i % 6 : (6 - (i % 6) - 1)] += arrNumbers[i];

相关问题