【发布时间】:2019-10-17 22:11:58
【问题描述】:
我正在尝试为我的家庭作业解决一个问题,但我卡住了。
这是任务:
编写一个程序来读取一个整数数组,并通过对相邻的元素求和来压缩它们,直到获得一个整数。例如,如果我们有 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”。
【问题讨论】:
-
令我惊讶的是,您的代码居然完成了。 condensed.length 上的 while 循环永远不应该终止!所以请阅读minimal reproducible example 并相应地增强您的问题。请也修复损坏的格式!
-
对此我很抱歉。这是我的第一个问题。
-
你得到的 result 来自
System.out.println(condensed.length),其余的永远不会结束(正如 GhostCat 已经解释的那样) -
对于
{2, 10, 3},答案是25 = 1*2 + 2*10 + 1*3;对于{5, 0, 4, 1, 2},答案是35 = 1*5 + 4*0 + 6*4 + 4*1 + 1*2。这是否建议了一种计算结果的方法?
标签: java arrays for-loop while-loop