为给定短语的用户搜索对象的arraylist

时间:2016-03-06 21:41:45

标签: java string for-loop search arraylist

我的程序让用户将一个客户名称和客户电话号码添加到一个arraylist。然后,如果用户希望他们可以根据他们输入的内容搜索(arraylist)客户。如果用户输入“nate”的名称并且仅在nat中键入以进行搜索。它应该显示包含nat的所有匹配。

我似乎无法正确使用for循环,如果确实如此。当我使用.equals方法时,它只匹配确切的内容。

现在我已将.equals更新为.contains。新问题是 for(客户c:客户)无效。客户是我创建对象的类,客户是包含Customer对象的arraylist。

在:for(客户c: 错误消息说:

  

错误:(107,31)java:不兼容的类型:java.lang.Object无法转换为Customer>

public class CustomerDirectory
{
    //Shorten Scanner
    static Scanner keyboard = new Scanner(System.in);

    static ArrayList customers = new ArrayList();


    public static void main(String[] args)
 ......
 .......
主类中的

方法,用于向arraylist添加客户名称和电话号码。

    public static void addCustomer()
{

    System.out.print("Enter new name: ");
    String name = keyboard.nextLine();
    name = keyboard.nextLine();
    System.out.print("Enter new phone number: ");
    String number = keyboard.nextLine();

    Customer newCustomer = new Customer(name, number);
    customers.add(newCustomer);

}
    public static void findCustomer()
{
    System.out.print("Enter name of customer to find: ");
    String findName = keyboard.nextLine();
    findName = keyboard.nextLine();
    if (findName.equals(" "))
    {
        System.out.println("You did not enter a name.");
    }
    else
    {
        for (Customer c : customers )
        {
            if (c.getCustomerName().contains(findName) )
            {
                System.out.println(c.getCustomerName());
            }
        }
    }
}

创建要进入数组列表的对象的类。     班级客户     {     static String customerName;     串电话;

public Customer(String customerName, String telePhone)
{
    setCustomerName(customerName);
    setTelePhone(telePhone);
}

public static String getCustomerName()
{
    return customerName;
}

public void setCustomerName(String customerName)
{
    //Make the user input lowercase
    customerName = customerName.toLowerCase();
    if (customerName.equals(""))
    {
        System.out.println("You did not enter a name. Did not create new                      
    customer.");
    }
    else if (customerName.length() > 25)
    {
        this.customerName = customerName.substring(0, 25);
    }
    else
    {
        this.customerName = customerName;
    }

}

public String getTelePhone()
{
    return telePhone;
}

public void setTelePhone(String telePhone)
{
    if (telePhone.equals(""))
    {
        System.out.println("You did not enter a telephone number. Did not   
    create new customer.");
    }
    else
    {
        this.telePhone = telePhone;
    }
}
}

2 个答案:

答案 0 :(得分:1)

尝试将var row_value = tab.cols[i].row_id; $('#row_list option[value=' + row_value + ']').prop('selected', true); 条件更改为:

if

  

当且仅当if时,java.lang.String.contains()方法返回true   该字符串包含指定的char值序列。

此外,您不需要2行来接受用户输入:

if (c.getCustomerName().contains(findName) )

删除第二行。

答案 1 :(得分:1)

ArrayList引用需要声明类型。 您还没有在ArrayList对象创建中提到任何类型,因此它将客户视为类型对象。

尝试替换下面的主要课程

public class CustomerDirectory {
    // Shorten Scanner
    static Scanner keyboard = new Scanner(System.in);

    static ArrayList<Customer> customers = new ArrayList<Customer>();

    public static void main(String[] args) {
    }
    ......
    ......

这一行非常重要:static ArrayList<Customer> customers = new ArrayList<Customer>();