压缩数组到数字

时间:2019-06-01 17:38:53

标签: java arrays for-loop while-loop

我正在尝试解决家庭作业中的一个问题,但是我卡住了。

这是任务:

  

编写一个程序以读取整数数组,并通过将相邻的几对元素求和来压缩它们,直到获得单个整数。例如,如果我们有3个元素{2,10,3},我们将前两个元素和后两个元素相加,得到{2 + 10,10 + 3} = {12,13},然后我们再次将所有相邻元素相加元素并获得{12 + 13} = {25}。

这是我到目前为止所做的,但是我卡住了,不知道如何继续。

for (int i = 0; i < arr.length; i++) {
    arr[i] = Integer.parseInt(input[i]);
}

int sum = 0;
int[] condensed = new int [arr.length-1];
System.out.println(condensed.length);

while (condensed.length > 1) {
    for (int i = 0; i < condensed.length; i++) {
        condensed[i] = arr[i] + arr[i+1];
    }   
}

if (condensed.length == 1) {
    sum = condensed[0] + condensed[1];
    System.out.println(sum);
}

输入为“ 5 0 4 1 2”,输出应为“ 35”,但我得到“ 4”。

2 个答案:

答案 0 :(得分:1)

鉴于您已经从输入中获得了数组(int arr[])或数字转换器,则可以从第一个元素到第一个元素连续循环遍历该数组,最后将那个值添加到下一个值并存储它们放在一个临时数组中。

然后您将temp数组替换为value数组,并继续该过程,直到该数组的长度等于1。

while (arr.length > 1) {
    int temp[] = new int[arr.length - 1];  

    for (int i = 0; i < arr.length - 1; i++) {
        temp[i] = arr[i] + arr[i + 1];
    }

    arr = temp;
}

答案 1 :(得分:0)

我已经写了一个示例代码,如果遇到麻烦可以扩展:

        int[] a1 = new int[] {2, 10 , 3};
        int[] a2 = new int[2];
        int[] a3 = new int[1];

        for(int i = 0; i < a1.length - 1; i++)
            a2[i] = a1[i] + a1[i + 1];

        for(int i = 0; i < a2.length - 1; i++)
            a3[i] = a2[i] + a2[i + 1];

        System.out.println(a3[0]);

通常,您将生成N个int数组(N = arr.length-1)并用循环填充它们