我正在为Java课程创建一个客户经理应用程序。我根据要求将其分为3个程序包。第一个程序包有一个名为Customer的类,该类对客户及其实例变量(例如customerID)进行建模。第二个程序包是一个包含ArrayList的客户数据库。第三个包将是一个菜单驱动的UI,它将允许用户在4个选项之间进行选择。目前,我一直试图编写一种方法,该方法将在列表中搜索给定的customerID并返回一个Customer对象。
在客户数据库类中,我正在方法中从用户获取客户ID。然后,我正在运行一个for循环,该循环应遍历该方法以查看是否找到了customerID。如果id是匹配项,我在如何返回客户对象方面遇到问题。
public Customer searchCustomer(String customerID) {
System.out.println("Enter customer ID you want to find:");
customerID = scnr.next();
Customer c;
for (int i = 0, i < customerList.size(); i++ {
c = customerList.get(i);
if (customerList.get(i).equals(customerID) {
String foundID = customerID;
}
}
}
我想在方法末尾返回Customer c,但无法弄清楚该怎么做。
答案 0 :(得分:0)
在if语句中,可以只写return c
。这将返回第一个匹配的客户。在该方法的最后,如果找不到客户,则可以返回null或引发异常。
答案 1 :(得分:0)
您将Customer对象与CustomerId进行比较。
将代码更改为
if (customerList.get(i).getId().equals(customerID) {
return customerList.get(i);
}
答案 2 :(得分:0)
您犯的一些潜在错误是:
将参数传递给您未使用的方法。在方法之外执行Scanner
东西,然后将ID传递给方法,或者在方法中执行Scanner
部分,并且没有参数。不过,通常首选前一种方法。
将客户与字符串进行比较。您需要将用户输入的ID与Customer
对象的ID字段进行比较。用户输入的字符串从不等于整个Customer
对象。
您不会从该方法返回任何内容。找到要查找的Customer
后,就需要一个return
语句。
此外,您可以使用Java的“增强的循环”来使代码更简洁。以下代码假定您的Customer
对象使用String
作为其ID,并在其上使用.getID()
方法来获取其ID。
这里有一些代码需要搜索客户。这可以是另一种方法。
System.out.println("Enter customer ID you want to find: ");
customerID = scnr.next();
Customer customer = searchCustomer(customerID);
这是遍历customerList的搜索方法
public Customer searchCustomer(String customerID) {
for(Customer customer : customerList) {
if (customer.getId().equals(customerID) ) {
return customer;
}
}
return null; // Or perhaps throw an exception.
}
请注意,我对未见代码的其他部分的结构进行了许多假设,因此,如果您想使用它,很可能必须修改此代码示例,但希望它可以使您走上正确的轨道。