これは私が取り組んでいる方法です。結果の Array[] を返すか、null を返す必要があります。ただし、テストしようとすると NullPointerException エラーが発生します。ここ数時間ずっと探していたのですが、どこにも行き着きませんでした。苦しんでいる学生のための助けをいただければ幸いです。
public Item[] searchByName(String name) {
String n = name;
ArrayList<Item> sortName = new ArrayList<Item>();
Item[] matchArr;
boolean noResult = false;
for(int j = 0; j < itemInventory.size(); j++){
if(itemInventory.get(j).getName().equalsIgnoreCase(n) == true)
sortName.add(itemInventory.get(j));
else
noResult = true;
}
matchArr = new Item[sortName.size()];
for(int j = 0; j < sortName.size(); j++){
matchArr[j] = sortName.get(j);
}
if(noResult == true)
return null;
else
return matchArr;
}
//改訂版 //itemInventory は、インベントリおよびソートされるオブジェクトの ArrayList です。
public Item[] searchByName(String name) {
String n = name;
ArrayList<Item> sortName = new ArrayList<Item>();
Item[] matchName;
for(int j = 0; j < itemInventory.size() ; j++){
if(itemInventory.get(j) != null){
if(itemInventory.get(j).getName().equalsIgnoreCase(n) == true){
sortName.add(itemInventory.get(j));
System.out.println(j + " Is a match");
}
}
}
if(sortName.size() == 0)
return null;
else{
matchName = sortName.toArray(new Item[sortName.size()]);
return matchName;
}