未找到项时引发异常-java

未找到项时引发异常-java,java,list,exception,throw,Java,List,Exception,Throw,我正在创建一个remove方法,该方法通过列出title(字符串)、seller(字符串)和price(整数)来删除项目。此方法旨在遍历每个列表以查找图书项目。如果找到图书项目,则应将其从列表中删除(即列表标题图)。如果找不到书项,我想扔掉一个书店 如何在方法中抛出异常?我曾想过使用while循环,但不确定如何实现它 如果有人能给我一些建议或问题的解决方案,那就太好了。另外,请随意批评代码,我有一种感觉,当我测试它时,它将不起作用。(初学者) @覆盖 public void remove(IBo

我正在创建一个remove方法,该方法通过列出title(字符串)、seller(字符串)和price(整数)来删除项目。此方法旨在遍历每个列表以查找图书项目。如果找到图书项目,则应将其从列表中删除(即列表标题图)。如果找不到书项,我想扔掉一个书店

如何在方法中抛出异常?我曾想过使用while循环,但不确定如何实现它

如果有人能给我一些建议或问题的解决方案,那就太好了。另外,请随意批评代码,我有一种感觉,当我测试它时,它将不起作用。(初学者)

@覆盖
public void remove(IBookItem book)引发书店异常{
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getTitle())){
bookEntry.getValue().remove(书本);
titleMap.remove();
System.out.println(“图书移除(通过标题地图):”+图书);
}
}
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getSeller())){
bookEntry.getValue().remove(书本);
sellerMap.remove();
System.out.println(“图书移除(通过sellerMap):”+图书);
}
}
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getPrice())){
bookEntry.getValue().remove(书本);
titleMap.remove();
System.out.println(“通过priceMap删除的图书):”+图书);
}
}   
}

您可以在方法中抛出
书店异常,如下所示:

if (/* book item not found */) {
    throw new BookStoreException();
}

您可以在方法中抛出
书店异常
,如下所示:

if (/* book item not found */) {
    throw new BookStoreException();
}

如果找到该书,请使用
返回
,以停止该方法的工作

当循环三次而没有找到书时,抛出
异常

下面的示例:

@Override
public void remove(IBookItem book) throws BookStoreException{


    for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
        BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
        if(bookEntry.getValue().equals(book.getTitle())){
            bookEntry.getValue().remove(book);
            titleMap.remove();
            System.out.println("book Removed (via titleMap): " + book);
            return;
        }
    }

    for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
        BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
        if(bookEntry.getValue().equals(book.getSeller())){
            bookEntry.getValue().remove(book);
            sellerMap.remove();
            System.out.println("Book Removed (via sellerMap): " + book);
            return;
        }
    }

    for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
        BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
        if(bookEntry.getValue().equals(book.getPrice())){
            bookEntry.getValue().remove(book);
            titleMap.remove();
            System.out.println("Book Removed (via priceMap): " + book);
            return;
        }
    }  
    throw new BookStoreException();
}
@覆盖
public void remove(IBookItem book)引发书店异常{
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getTitle())){
bookEntry.getValue().remove(书本);
titleMap.remove();
System.out.println(“图书移除(通过标题地图):”+图书);
返回;
}
}
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getSeller())){
bookEntry.getValue().remove(书本);
sellerMap.remove();
System.out.println(“图书移除(通过sellerMap):”+图书);
返回;
}
}
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getPrice())){
bookEntry.getValue().remove(书本);
titleMap.remove();
System.out.println(“通过priceMap删除的图书):”+图书);
返回;
}
}  
抛出新书店异常();
}

如果您找到该书,请使用
返回
,以停止该方法的工作

当循环三次而没有找到书时,抛出
异常

下面的示例:

@Override
public void remove(IBookItem book) throws BookStoreException{


    for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
        BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
        if(bookEntry.getValue().equals(book.getTitle())){
            bookEntry.getValue().remove(book);
            titleMap.remove();
            System.out.println("book Removed (via titleMap): " + book);
            return;
        }
    }

    for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
        BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
        if(bookEntry.getValue().equals(book.getSeller())){
            bookEntry.getValue().remove(book);
            sellerMap.remove();
            System.out.println("Book Removed (via sellerMap): " + book);
            return;
        }
    }

    for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
        BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
        if(bookEntry.getValue().equals(book.getPrice())){
            bookEntry.getValue().remove(book);
            titleMap.remove();
            System.out.println("Book Removed (via priceMap): " + book);
            return;
        }
    }  
    throw new BookStoreException();
}
@覆盖
public void remove(IBookItem book)引发书店异常{
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getTitle())){
bookEntry.getValue().remove(书本);
titleMap.remove();
System.out.println(“图书移除(通过标题地图):”+图书);
返回;
}
}
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getSeller())){
bookEntry.getValue().remove(书本);
sellerMap.remove();
System.out.println(“图书移除(通过sellerMap):”+图书);
返回;
}
}
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getPrice())){
bookEntry.getValue().remove(书本);
titleMap.remove();
System.out.println(“通过priceMap删除的图书):”+图书);
返回;
}
}  
抛出新书店异常();
}

在方法开头创建一个初始值为false的布尔变量。如果在其中一个循环中找到该项,则将其设置为true,并在方法结束时检查变量:

@Override
public void remove(IBookItem book) throws BookStoreException{

boolean itemFound = false;

for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
    BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
    if(bookEntry.getValue().equals(book.getTitle())){
        itemFound  = true;
        bookEntry.getValue().remove(book);
        titleMap.remove();
        System.out.println("book Removed (via titleMap): " + book);
    }
}

//here other loops

if (!itemFound){
    throw new BookStoreException("Item not found!");
}}
@覆盖
public void remove(IBookItem book)引发书店异常{
布尔itemFound=false;
for(Iterator it=titleMap.Iterator();it.hasNext();){
BookEntry=(BookEntry)it.next();
if(bookEntry.getValue().equals(book.getTitle())){
itemFound=true;
bookEntry.getValue().remove(书本);
titleMap.remove();
System.out.println(“图书移除(通过标题地图):”+图书);
}
}
//这里是其他循环
如果(!itemFound){
抛出新书店异常(“未找到项目!”);
}}
更多提示: 1.使用it.remove()而不是titleMap.remove(),它将不起作用(如果更改集合,迭代器将无效)
2.更正第二和第三个循环中的集合名称,注意复制粘贴。

在方法开头创建一个初始值为false的布尔变量。如果在其中一个循环中找到该项,则将其设置为true,并在方法结束时检查变量:

@Override
public void remove(IBookItem book) throws BookStoreException{

boolean itemFound = false;

for(Iterator<BookEntry<String, ArrayList<BookItem>>> it = titleMap.iterator(); it.hasNext();){
    BookEntry<String, ArrayList<BookItem>> bookEntry = (BookEntry<String,ArrayList<BookItem>>)it.next();
    if(bookEntry.getValue().equals(book.getTitle())){
        itemFound  = true;
        bookEntry.getValue().remove(book);
        titleMap.remove();
        System.out.println("book Removed (via titleMap): " + book);
    }
}

//here other loops

if (!itemFound){
    throw new BookStoreException("Item not found!");
}}
@覆盖
P