【发布时间】:2010-10-25 21:20:09
【问题描述】:
我有一个程序需要能够搜索“书”对象的 ArrayList,并确定哪些符合给定条件。
您可以按姓名、身份证号或出版年份进行搜索。 或者只是通过上述的任何分类。
目前我使用嵌套的 if 语句,其中 null 值表示未指定该字段并显示全部。
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”时两者都应返回。我怎样才能做到这一点?
感谢您的帮助,感谢您的宝贵时间!
【问题讨论】:
-
你不需要在你的问题标题中包含
[tag],我们有标签=) -
另外,你应该考虑交换
condition || foo = null子句的顺序,如果foo实际上是null,短路逻辑会减少检查次数 -
您不需要嵌套的
if语句。您可以使用&&加入所有条件(确保将所有内容括起来,因为&&的优先级高于||)。 -
吸气剂也不错。而不是
bookList.get(x).title,你应该有bookList.get(x).getTitle()。