电话簿与java中的arraylist

时间:2015-11-15 11:25:15

标签: java arraylist

我想在java中尝试使用arraylist进行电话簿的简单实现。 首先我创建了一个包含什么信息的类。需要和第二我想要另一个类,有方法,如获取信息和打印它们。

因为我想使用数组列表这是我到目前为止所做的,但是' print'方法继续给我循环中的错误,有没有人可以帮助我优化我的代码以及为什么我有这个错误。

这是第一堂课:

public class PhoneBook {
long number;
String name;
.
.
.
.

getter() and setter();
}

第二节有方法:

public class PhoneBookMethods {

ArrayList<PhoneBook> phoneBooks = new ArrayList<PhoneBook>();

public void getInfo(PhoneBook phoneBooks)
{

.
.
.
}
public void print(PhoneBook phoneBooks)
{
    for (PhoneBook p: phoneBooks) {// this is where I got the error
//foreach not applicable to type 'PhoneBook'
        System.out.print(p.getName());
        ....
    }
}

}

4 个答案:

答案 0 :(得分:2)

在for-each循环中,更改

for (PhoneBook p: phoneBooks)

for (PhoneBook p: this.phoneBooks)

这样您就可以访问phoneBooks arraylist,而不是print方法的参数。

修改

您可以使用&#34; 这个&#34;关键字使您的代码更加明确&#34;。 例如,在您的情况下,您有一个名为phoneBooks的参数,其名称与您的ArrayList(成员变量)相同。因此,要明确区分它们中的两个,请使用this.phonebooks来访问成员变量phoneBooks(ArrayList),并使用phoneBooks来引用参数。

答案 1 :(得分:1)

如果要使用实例变量phoneBooks,则无需在方法print()中传递任何参数。

public void print()
{
    for (PhoneBook p: phoneBooks) {// this is where I got the error
//foreach not applicable to type 'PhoneBook'
        System.out.print(p.getName());
        ....
    }
}

或者,如果你真的想传递param重命名参数名称

public void print(ArrayList<PhoneBook> phoneBookList)
{
    for (PhoneBook p: phoneBookList) {// this is where I got the error
//foreach not applicable to type 'PhoneBook'
        System.out.print(p.getName());
        ....
    }
}

答案 2 :(得分:0)

public void print(PhoneBook phoneBooks)

您的参数phoneBooks屏蔽了也称为phoneBooks的字段(数组)。因此编译器会尝试将参数视为列表并使其失效。

答案 3 :(得分:0)

实际上一开始你有一些设计问题。您认为什么是电话簿的方式无效。你应该考虑一个电话簿,上面有几个手机。因此,您可能拥有如下手机类:

public class Phone {

    private String number;
    private String name;

    public String getNumber() {
        return number;
    }

    public void setNumber(String number) {
        this.number = number;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

负责持有这些电话对象的电话簿类:

public class PhoneBook extends ArrayList<Phone> {

    @Override
    public String toString() {
        StringBuilder stringBuilder = new StringBuilder();

        for (Phone phone : this) {
            stringBuilder.append("----------------------------\n");
            stringBuilder.append("Name:" + phone.getName() + "\n");
            stringBuilder.append("Number:" + phone.getNumber() + "\n");
        }

        return stringBuilder.toString();
    }

}

这是电话的arraylist,仅此而已。因此,您可以直接通过电话簿添加或删除手机。这是如何使用它:

public class MAIN {

    public static void main(String[] args) {
        Phone myPhone = new Phone();
        myPhone.setName("Eray");
        myPhone.setNumber("0533XXXXXXX");

        Phone girlfriendPhone = new Phone();
        girlfriendPhone.setName("Canan");
        girlfriendPhone.setNumber("0544XXXXXXX");

        Phone yourPhone = new Phone();
        yourPhone.setName("Bita Mirshafiee");
        yourPhone.setNumber("0599XXXXXXX");


        PhoneBook phoneBook = new PhoneBook();
        phoneBook.add(myPhone);
        phoneBook.add(girlfriendPhone);
        phoneBook.add(yourPhone);

        System.out.println(phoneBook);
    }

}

最后,这是输出:

----------------------------
Name:Eray
Number:0533XXXXXXX
----------------------------
Name:Canan
Number:0544XXXXXXX
----------------------------
Name:Bita Mirshafiee
Number:0599XXXXXXX