Java基础问题(追加80分)
发布网友
发布时间:2022-04-28 15:53
我来回答
共1个回答
热心网友
时间:2022-06-19 13:48
兄弟,你的 Bookshop 中的 bookname 方法写错了。
你运行的时候肯定是抛 ElementNotFound异常,对不对?
原来那个方法是这样的 :
public String bookname(String book)//根据书名查询书籍功能
{ String shu = null;
Iterator itr = this.fun().iterator();
while(itr.hasNext())
{
System.out.println(itr.next());
Book b = (Book)itr.next();
if(b.equals(book))
{
shu = book;
break;
}
}
return shu ;
}
1)你在里面加了打印所有迭代过的书的toString方法值,所以,看到很多书。
2)其次你在while 循环中使用了两个 itr.next(), 而实际上 一次循环只判断一次。所以最后一定抛出异常。
3)你在匹配的时候应该是书名,而不是书对象本身,所以你根本没有找到你要找的书
我帮你修改了一下 bookname 方法:
public String bookname(String book)// 根据书名查询书籍功能
{
String shu = null;
Iterator itr = this.fun().iterator();
while (itr.hasNext()) {
Book b = (Book) itr.next();
//打印所有被匹配过的书的名字。
System.out.println("has searched book name : "+b.getBookname());
if (b.getBookname().equals(book)) {
shu = book;
break;
}
}
return shu;
}
替代以前的方法。
这样就可以了,记得追加80分哦,呵呵