Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将数组压缩为数字_Java_Arrays_For Loop_While Loop - Fatal编程技术网

Java 将数组压缩为数字

Java 将数组压缩为数字,java,arrays,for-loop,while-loop,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] = I

我正试图为我的家庭作业解决一个问题,但我被卡住了

任务如下:

编写一个程序来读取一个整数数组,并通过对相邻的元素对求和来压缩它们,直到得到一个整数。例如,如果我们有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);
}
for(int i=0;i1){
对于(int i=0;i

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

我已经编写了一个示例代码,如果遇到问题,您可以扩展该代码,请告诉我:

        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]);
int[]a1=新的int[]{2,10,3};
int[]a2=新的int[2];
int[]a3=新的int[1];
对于(int i=0;i

通常,您可以生成N个int数组(N=arr.length-1),并使用循环填充它们,因为您已经从输入中获得了数组(
int arr[]
)或数字转换器,您可以在数组中连续循环,从第一个元素循环到最后一个元素之前的元素,将该值添加到下一个值,并将它们存储在临时数组中

然后将值数组替换为临时数组,并继续此过程,直到数组的长度等于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;
}
while(arr.length>1){
int temp[]=新int[arr.length-1];
对于(int i=0;i
你的代码居然完成了,这让我很惊讶。condensed.length上的while循环永远不应该终止!因此,请阅读并相应地强化您的问题。请修复损坏的格式!对此我很抱歉。这是我的第一个问题。您得到的结果来自于
System.out.println(condensed.length)
,而对于
{2,10,3}
,其余的问题永远不会结束(正如GhostCat所解释的),答案是
25=1*2+2*10+1*3
;对于
{5,0,4,1,2}
,答案是
35=1*5+4*0+6*4+4*1+1*2
。这是否建议了一种计算结果的方法?如果条目包含4个(或更多)元素怎么办?我本来应该扩展我在编写时提供的代码,但如果需要,我可以使用列表对其进行修改,但我认为太感谢您的回答和编辑我上面的问题了。这是可行的,我可以理解为什么,也可以理解为什么它不能与我的代码一起工作!