【发布时间】:2015-06-05 16:34:20
【问题描述】:
我创建了一个For Each 循环,在其中完成工作,然后将其添加到String ArrayList var_CaramelChoc,每次迭代都添加到ArrayList<ArrayList<String>> numStuff。
但是当功能完成时。这些结果不会显示为已添加到 ArrayList<ArrayList<String>> numStuff(而是显示为空)。
如何修复我的代码,以便将在 forEach 循环内的 String ArrayList var_CaramelChoc 内完成的工作添加到 ArrayList<ArrayList<String>> numStuff 中?
要明确,ArrayLists 添加到numStuff 并不是没有值。问题是ArrayList<ArrayList<String>> numStuff 本身,完全是空的(当前没有添加任何 ArrayList)。
代码如下:
private ArrayList<ArrayList<String>> hasStuff(String line) {
ArrayList<ArrayList<String>> numStuff = new ArrayList<>();
for (String caramelChoc : CaramelChoc) {
ArrayList<String> var_CaramelChoc = new ArrayList<>();
if ((line.contains(caramelChoc.toLowerCase() + " ") || line.contains(caramelChoc + " ")) && line.contains(";")) {
String mainString = line.toLowerCase();
if (!(mainString.contains(","))) {
var_CaramelChoc.add((line).replace(";", ""));
} else {
...
}
}
numStuff.add(new ArrayList<>(var_CaramelChoc));
}
return numStuff;
}
我预期会发生什么,除非我弄错了。在每次迭代中,一个arrayList 将被添加到ArrayList<ArrayList<String>> numStuff 即使下面的条件不满足(在任何一种情况下,虽然添加的arrayList 可能是空的。一个空的arrayList,仍然存在在 numStuff 中)。但目前情况并非如此。
if ((line.contains(caramelChoc.toLowerCase() + " ") || line.contains(caramelChoc + " ")) && line.contains(";")) {
【问题讨论】:
-
CaramelChoc,我们不知道它来自哪里,很可能是空的。 -
什么是“焦糖巧克力”?似乎您的问题出在 if 上,您可以通过打印 line 和 caramelChoc 包含的内容来调试代码吗?
-
你确定第一个 IF 在某个时候匹配吗?因为如果条件从未满足,它只会添加空的 var_CaramelChoc arraysLists
-
正如@Jean 所建议的,检查您的
CaramelChoc是否为空。这意味着您不进入循环本身,numStuff将为空。 -
是的,我已经调试并检查过了,因此我在上面进行了详细解释。关于其他 cmets,请阅读下面代码的最后一段,因为这充分解释了即使不满足条件,也应该添加一个空数组列表,但它不是
标签: java android android-activity arraylist foreach