我有一个程序,需要能够搜索'book'对象的ArrayList,并决定哪些符合给定的条件。多个字符串和条件匹配?
您可以按名称,身份证号码或发布年份进行搜索。 或只是由上述的任何分类。
目前我使用嵌套的if语句,其中,空值表示字段没有被指定,并且显示所有。
for(int x = 0; x<bookList.size(); x++)
{
if(bookList.get(x).callNum.equals(callNum) || callNum == null)
{
if(bookList.get(x).title.equals(title) || title == null)
{
if((bookList.get(x).year>= startDate
&& bookList.get(x).year <= endDate) || timeFrame == null)
{
bookList.get(x).ToString();
}
}
}
}
我唯一有问题的地方就是标题变量。我需要它来做字级匹配。因此,如果一本书被称为“Java编程”,另一本书被称为“面向对象的Java编程”,那么当搜索寻找“Java”时,两者都应该被返回。我怎样才能做到这一点?
我很感谢任何帮助,感谢您的时间!
你并不需要包括'[标签]'你的问题的标题,我们有标记为=) – 2010-10-25 21:27:21
此外,你应该考虑换的'条件的顺序|| foo = null'子句,短路逻辑将减少事件中'foo'事实上为'null'的检查次数。 – 2010-10-25 21:28:45
您不需要嵌套的'if'语句。你可以用'&&'来加入所有的条件(确保所有的东西都加上括号,因为'&&'比'||'具有更高的优先级)。 – 2010-10-25 21:28:59