我正在尝试从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
提交
取消
