0
我的目標是搜索多樹結構以查看哪個項目與我正在查找的名稱匹配。我通過實現一個接口,我在每個需要搜索的類中實現一個名爲SearchByName的接口。SearchableByName接口不斷返回null
我的數據被包含的方式是我有一個ArrayList,其中包含Party對象的ArrayList,每個對象都有一個名稱被稱爲洞穴的物體,每個締約方都有一個被稱爲成員的ArrayList,每個成員都有一個名字,每個生物都有一個名爲artifacts的ArrayList,這些artifacts由Artifact對象組成,每個對象都擁有一個名稱;
每次搜索時,即使應該有匹配,搜索也會返回null。
這是我執行搜索代碼:
for (Party p : SorcerersCave.theCave.parties){
SearchableByName foundItem = p.searchByName(name);
if (foundItem != null) {
GenerateInterface.theGame.printOutput("\t" + foundItem);
} else {
GenerateInterface.theGame.printOutput("Item NOT FOUND");
}
break;
}
這是我實現的接口:
interface SearchableByName {
public SearchableByName searchByName (String name);
public String getName();
}
,這是該接口被黨的實施:
public SearchableByName searchByName (String n) {
if (getName() == n) {
return this;
} else {
for (Creature c : members) {
SearchableByName found = c.searchByName(n);
if (found != null) {
return found;
}
}
}
return null;
}
這是生物正在實現的接口:
public SearchableByName searchByName (String n) {
if (getName() == n) {
return this;
} else {
for (Artifact a : artifacts) {
SearchableByName found = a.searchByName(n);
if (found !=null) {
return found;
}
}
}
return null;
}
最後我實現工件的接口:
public SearchableByName searchByName (String n) {
return (getName() == n) ? this : null;
}
這是我第一次嘗試在搜索到類,而不是做的一切頂層。
'if(getName()== n)'是你的問題... –