【发布时间】:2016-04-14 12:23:54
【问题描述】:
以下代码让我非常头疼。它只是做我想做的事情,即接受输入的字符串,然后通过对象的分类(字符串)搜索书籍对象的数组列表,然后返回该书籍对象。目前,只要输入分类是列表中书籍的实际分类,下面的代码就可以工作。例如,找到了 TD999,因此将其返回。但是,如果我为该类键入一堆废话,例如 yhgfsdsfbv,它仍然会返回一本书,例如 TD345(似乎它变成了一本书,最初归类为 null,然后在程序运行时使用 setClassification 方法进行分类。
public Book searchClass(String inputClass){
Book foundBook = null;
for(Book findClass : bookStore){
if(findClass.getClassification()!=null &&
findClass.getClassification().equalsIgnoreCase(givenClass))
return findClass;
foundBook = findClass;
}
return foundBook;
}
我尝试修复它是这样的:
public Book searchClass(String inputClass) throws IllegalArgumentException{
Book foundBook = null;
for(Book findClass : bookStore){
if(!(findClass.getClassification().equalsIgnoreCase(inputClass))){
throws new IllegalArgumentException("book not found")
}
else if(findClass.getClassification().equalsIgnoreCase(inputClass)){
foundBook = findClass;
}
}
return foundBook;
}
但是,即使我正确输入了列表中的分类,这也会每次都抛出异常。
我不知道如何解决这个问题来做我想做的事,我已经厌倦了很多其他方式,从来没有正常工作。我已经阅读了我所有的讲义、几本教科书和 oracle 网页,但不知道是什么导致了问题,因此我无法修复它。
【问题讨论】: