【发布时间】:2019-02-06 22:04:33
【问题描述】:
我不是程序员。我在仓库工作,我想让我的工作更轻松。我的职责之一是将超过 2000 行的 excel 文件分成较小的文件并发送出去。我手动完成,我想创建一个为我完成的程序。
我已经设法从 excel 中读取数据。每一行都放入一个 Item 数据结构中。并且全部放入ArrayList中。
public class Item{
String ean;
int amount;
}
这是我的问题。
我有一个包含 2000 多个元素的 ArrayList。每个元素都有 String Name 和 int amount。
我必须把它分成更小的ArrayLists,但条件是item.getAmount()的总量不能超过800;
int totalAmount = 0;
int counter = 1;
List<Item> temp = new ArrayList<>();
for (Itema item: items) {
totalAmount += item.getAmount();
if (totalAmount <= 800) {
temp.add(item);
}
if (counter == items.size()) {
createFile(temp);
temp.clear();
}
if (totalAmount > 800) {
createFile(temp);
temp.clear();
temp.add(item);
totalAmount = 0;
}
counter++;
}
当我使用包含 30 个项目的 ArrayList 运行此程序时,每个项目的数量为 100。它会创建 4 个 excel 文件。前三个只有 1 行,第四个有 4 行。
我想不通。有什么建议吗??
【问题讨论】:
-
你不应该清除
temp之后你在createFile中使用它吗?您正在擦除列表,向其中添加元素,然后使用已擦除的列表创建文件。 -
欺骗关闭不是我说你的问题不好,而是我说你的答案在另一座城堡里。无论如何,我想不出比其他答案更好的方法。
-
@Makoto 这不是同一个问题。这些答案中的大多数在这里都无关紧要。
-
@Makoto,要求似乎是每个子列表中
Items 的amount属性值的总和不超过800。这与子列表的大小无关。 -
应该
totalAmount = 0;是totalAmount = item.getAmount();?