从客户的arraylist返回客户

时间:2013-07-09 19:00:15

标签: java

所以我有这两种方法: 第一个是浏览客户的arraylist并返回值c,即String类型的ID与ArrayList中的某个客户匹配的客户。

private Customer findCustomer(String id){
    Customer c;
    for(Customer customer : customers){
        if(customer.getID().equals(id)){
            c = customer;
            return c;
        }
    }
    return null;
}

然后我有第二个,当有人在我的制作班次电影租赁计划的GUI中访问此方法并传入电影,他们租用的那天,以及客户的身份

public void movieRented(Movie m, Date rented, String id){
    m.setDateRented(rented);
    Customer c = findCustomer(id);
    c.addMovie(m);
    m.setIntStock(false);
}

我收到有关这两种方法的错误消息,我只是想确保它们至少看起来正确。

2 个答案:

答案 0 :(得分:3)

请注意您将返回null,这样您就可以拥有NullPointerException

private Customer findCustomer(String id){
        Customer c;
        for(Customer customer : customers){
            if(customer.getID().equals(id)){
                c = customer;
                return c;
            }
        }
        return null;
    }

您可以考虑改进方法

private Customer findCustomer(String id){
            Customer c=null;
            for(Customer customer : customers){
                if(customer.getID().equals(id)){
                    c = customer;
                    break;
                }
            }
            return c;
}

现在更好,使用自定义例外

 private Customer findCustomer(String id) throws NoFoundCustomerException{
                Customer c=null;
                for(Customer customer : customers){
                    if(customer.getID().equals(id)){
                        c = customer;
                        break;
                    }
                }
                if(c == null){
                 throw new NoFoundCustomerException();
                }

                return c;
}

在客户端代码中,您可以执行以下操作:

public void movieRented(Movie m, Date rented, String id){
    try{
    m.setDateRented(rented);
    Customer c = findCustomer(id);
    c.addMovie(m);
    m.setIntStock(false);
   }catch(NotFoundedCustomerException e){
     JOptionPane.showMessage(null,"Customer doesn't exist");
   }
}

你的例外看起来像这样

public class NotFoundedCustomerException extends Exception{

 public NotFoundedCustomerException(){
        super();
 }

 public NotFoundedCustomerException(String message){
        super(message);
 }
  .
  .
  .
}

答案 1 :(得分:0)

我不确定这是否正确,但这一行可能存在拼写错误:

m.setIntStock(false);

看起来应该是

m.setInStock(false);

如果找不到客户,您可能会遇到麻烦。如果你不确定为什么会这样,我会建议一些简单的println语句。例如:

System.out.println("customer id = " + customer.getId() + " id= " + id);