所以我有这两种方法:
第一个是浏览客户的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);
}
我收到有关这两种方法的错误消息,我只是想确保它们至少看起来正确。
答案 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);