我在名为“ l”的数组列表中插入了25个元素。接下来,我添加前五个元素并将总计存储到数组的第一个位置(a [0])。然后再次添加下五个元素并将总计存储到一个数组中数组第二个位置(a [1])。同样,它继续进行。然后我最后打印了数组“ a”。为此我尝试了循环。
for (int i = 0; i<5; i++) {
total = total + l.get(i);
}
System.out.println("1 " + total);
a[0] = total;
total = 0;
for (int i = 5; i<10; i++) {
total = total + l.get(i);
}
System.out.println("2 " + total);
a[1] = total;
total = 0;
for (int i = 10; i<15; i++) {
total = total + l.get(i);
}
System.out.println("3 " + total);
a[2] = total;
total = 0;
for (int i = 15; i<20; i++) {
total = total + l.get(i);
}
System.out.println("4 " + total);
a[3] = total;
total = 0;
for (int i = 20; i<25; i++) {
total = total + l.get(i);
}
System.out.println("5 " + total);
a[4] = total;
}
for(int i=0;i<a.length;i++)
{
System.out.println(a[i]);
}
例如:如果数组列表包含元素(“ 1,1,0,8,4,6,6,1,0,1,4,1,1,1,1,6,6,4,1, 0,8,8,3,8,1,0“),然后将输出打印为“ 14 14 13 19 20“并且此代码可以正确打印。我使用5 for循环来执行此操作,是否还有其他简单的方法可以执行此操作?如果可以,则告诉我可以使用什么逻辑?
答案 0 :(得分:1)
您的代码存在一个主要问题,您最多只能处理大小为25的数组。您应该使用循环来获取所需的行为。 (使用循环的好处是不会一再重复使用代码)
看看您的代码,似乎一遍又一遍地重复什么?
似乎是该部分:
for (int i = 0; i<5; i++) {
total = total + l.get(i);
}
System.out.println("1 " + total);
a[0] = total;
total = 0;
重复5次!您应该始终以编写 最少 数量的代码
为目标您可以将解决方案归纳为以下内容:
for (int chunk = 0; chunk < 5; chunk ++) {
for (int i = 0; i < 5; i++) {
total = total + l.get(i + chunk * 5);
}
System.out.println(chunk + " " + total);
a[chunk] = total;
total = 0;
}
您可以使用另一个array
array list
作为结果。
像这样:
List<Integer> results = new ArrayList<Integer>();
for (int i = 0; i < l.size(); i++) {
int chunk = i / 5;
if (chunk >= results.size())
results.add(l.get(i));
else
results.set(chunk, l.get(i) + results.get(chunk));
}
for (int i = 0; i < results.size(); i++) {
System.out.println(i + " " + results.get(i));
}