尝试使用Java编写一种方法,该方法将搜索数据库列表并返回给定customerID

时间:2019-04-30 20:19:02

标签: java arraylist

我正在为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,但无法弄清楚该怎么做。

3 个答案:

答案 0 :(得分:0)

在if语句中,可以只写return c。这将返回第一个匹配的客户。在该方法的最后,如果找不到客户,则可以返回null或引发异常。

答案 1 :(得分:0)

您将Customer对象与CustomerId进行比较。

将代码更改为

if (customerList.get(i).getId().equals(customerID) {
    return customerList.get(i);
}

答案 2 :(得分:0)

您犯的一些潜在错误是:

  1. 将参数传递给您未使用的方法。在方法之外执行Scanner东西,然后将ID传递给方法,或者在方法中执行Scanner部分,并且没有参数。不过,通常首选前一种方法。

  2. 将客户与字符串进行比较。您需要将用户输入的ID与Customer对象的ID字段进行比较。用户输入的字符串从不等于整个Customer对象。

  3. 您不会从该方法返回任何内容。找到要查找的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.
}  

请注意,我对未见代码的其他部分的结构进行了许多假设,因此,如果您想使用它,很可能必须修改此代码示例,但希望它可以使您走上正确的轨道。