gpt4 book ai didi

Java枚举和循环问题

转载 作者:行者123 更新时间:2023-12-02 00:39:34 24 4
gpt4 key购买 nike

我有一个循环遍历的节点列表:

for (int i = 0; i < aNodes.getLength(); i++) {
//
}

例如,假设列表包含 12 个项目,并且我知道 3 个项目代表表中的一行,接下来的 3 个项目属于下一行。这意味着我的 12 个节点列表源自包含 4 行的 HTML 表。

在每一行之后我想做一些事情,例如,创建一个新对象并填充它......或者其他什么。我有一个解决方案:

ArrayList<Account> mAccounts = new ArrayList<Account>();
Account account = new Account();

for (int i = 0; i < aNodes.getLength(); i++) {

String nodeValue = aNodes.item(i).getNodeValue();
boolean isNewRow = (i % COLS_PER_ROW == 0);

if (isNewRow) {
account = new Account();
mAccounts.add(account);
}

switch (i % COLS_PER_ROW) {
case ACCOUNT_POS:
account.setAccount(nodeValue);
break;
case BALANCE_POS:
account.setBalance(nodeValue);
break;
case DATE_POS:
account.setDate(nodeValue);
break;
}
}

但是这个解决方案有很多我不喜欢的地方:

  1. Account 实例第一次创建两次,一次在循环外创建,另一次是因为检测到新行而创建。
  2. 它使用整数常量 ACCOUNT_POS=0、BALANCE_POS=1、DATE_POS=2...这感觉不太好,我认为我应该使用枚举。
  3. 我无法将枚举与循环变量“i”一起使用。
  4. 我无法使用 for every 循环,因为 Nodes 没有实现正确的接口(interface),

任何人都可以建议一种更好的方法来解决我不喜欢的一系列问题吗?

谢谢。

最佳答案

您可以将 i 增加 COLS_PER_ROW 而不是 1,然后写入:

for (int i = 0; i < aNodes.getLength(); i += COLS_PER_ROW) {
account = new Account();
String account = aNodes.item(i).getNodeValue();
account.setAccount(account);
String balance = aNodes.item(i+1).getNodeValue();
account.setBalance(balance);
String date = aNodes.item(i+2).getNodeValue();
account.setDate(date);
mAccounts.add(account);
}

关于Java枚举和循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6745818/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com