嗨我有一个简单的问题。
我在将input.txt文件中的项目添加到新列表时遇到问题。
我有一个包含28个项目的文件,其中包含名称和数字,其中27个是我创建的类别和列表的一部分。但是还有一个应该被处理并包含在一个名为“未知项目”的新类别中,这个项目应该包括那里或可能添加的不属于这些列表的任何项目,包括拼写错误。
无论如何,我为我的类别和列表创建了ArrayLists。这是我的代码,它工作正常:
for(Items i : list) {
for(String name: cat1) {
if(i.name.equalsIgnoreCase(name))
lista1.add(i);
}
但是当我试图为未知物品列表做同样的事情时,它不起作用,现在我得到的与我需要的完全相反,它是我最接近排序的,它包括27个项目,不包括我需要的项目,当我试图反转它时,它只是搞砸了,我只是无法弄清楚我做错了什么,这就是我所拥有的:
next:
for(String name: catAll){
if(!i.name.equalsIgnoreCase(name)) continue next;
listUnknow.add(i);
}
如果有人能帮助我,我会很感激。
由于
答案 0 :(得分:1)
你正在寻找这样的东西:
for(Items i : list) {
boolean unknown = true;
for(String name: cat1) {
if(i.name.equalsIgnoreCase(name)) {
lista1.add(i);
unknown = false;
break;
}
}
if(unknown) {
listUnknown.add(i);
}
}
您的代码存在的问题是反转不像您认为的那样有效。如果你的cat1包含“a”,“b”并且你当前的项目是“b”,那么第一次检查将返回true。毕竟,!"b".equalsIgnoreCase("a")
是真的。您需要先检查cat1中的所有项目,然后才能说它是未知的。
答案 1 :(得分:0)
不知道什么是p&我在你的第二个片段,但它在每次继续时开始循环...也许没有标签尝试(跳过添加)?
for(String name: catAll){
if(!i.name.equalsIgnoreCase(name)){
continue;
}
listUnknow.add(p);
}