我正在嘗試從csv文件中獲取特定數據。在本例中,im 使用 ID,這是文件中的第一個字符串。動物詳情.txt0,2,AmercianShorthair,100,AmercianShorthair,AmercianShorthair,y,y,900.0,Ann,3,4,GermanShepherd,100,GermanShepherd,GermanShepherd,no,yes,600.0,Dave,6,3,Poodle,100,Poodle,Poodle,yes,no,300.0,Dianna,456,4,Azawakh,50,Unknown,Azawakh,no,no,300.0,April,25041019042018,1,Vizsla,50,Vizsla,TreeingTennesseeBrindle,no,yes,500.0,Lex,3271,1,Beagle,50,Beagle,Unknown,no,no,200.0,Blanton,48331827032019,33,sheperd,50,50,50,no,yes,300.0,Mike,主應用public class AppTest { public static void main(String[] ages) { //Load file AnimalManager aMgr = new AnimalManager(); aMgr.loadFromFile("AnimalDetails.txt"); //Test DELETE By Animal ID try { Animals anim = aMgr.getAnimalById("0");//Insert animal ID here aMgr.deleteAnimal(anim); } catch (IllegalArgumentException exc) { System.out.println(exc); } }}經理//Delete animalpublic void deleteAnimal (Animals a) { if (a == null) throw new IllegalArgumentException("Animal argument is null"); animalList.remove(a);}//Get animal by IDpublic Animals getAnimalById(String ID) { for (Animals a : this.animalList) { if (a.getID().equals(ID)) return null; } return null;}當我在主應用程序中插入動物ID時,它會返回空值,而不是成功的刪除消息。這里可能有什么問題?輸出: java.lang.非法參數異常: 動物參數為空
2 回答

牧羊人nacy
TA貢獻1862條經驗 獲得超7個贊
首先,您始終從獲取動畫字節字節返回空值。您應該將其更改為:
public Animals getAnimalById(String ID) {
for (Animals a : this.animalList) {
if (a.getID().equals(ID))
return a;
}
return null;
}
其次,在這樣的代碼中進行空值檢查并沒有什么壞處:
Animals anim = aMgr.getAnimalById("0");//Insert animal ID here
if(anim!=null) aMgr.deleteAnimal(anim);
雖然我認為這個特定的代碼只是作為一個例子。但是仍然 - 具有給定ID的動物可能不在列表中,因此通常應該在此類代碼中放置空檢查,因為我認為您不希望在這種情況下程序失敗。
添加回答
舉報
0/150
提交
取消