首页 > 解决方案 > 尝试用 Java 编写一个方法,该方法将搜索数据库列表并返回一个 Customer 对象,给定一个 customerID

问题描述

我正在为 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;
          }
     }
}         

我想在方法结束时返回客户 c,但不知道如何执行此操作。

标签: javaarraylist

解决方案


您正在犯的一些潜在错误是:

  1. 将参数传递给您未使用的方法。要么Scanner在方法之外做一些事情,然后将 ID 传递给方法,要么在方法中做Scanner部分并且没有参数。不过,前一种方法通常是首选方法。

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

  3. 您没有从该方法返回任何内容。一旦你找到Customer你正在寻找的,你需要一个return声明。

此外,您可以使用 Java 的“增强的 for 循环”使代码更简洁。下面是一些代码,假设您的Customer对象使用 aString作为它们的 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.
}  

请注意,我对我未见过的代码的其他部分的结构做了很多假设,所以如果你想使用它,你很可能必须修改这个代码示例,但希望它能让你在正确的轨道上。


推荐阅读