0

我试图从另一个类中列出数组列表中的项目。

我总共有 3 节课

Tell - 主程序

Item - 创建单个电话簿项目的类

目录 - 存储所有项目的目录对象。

我想要做的是列出在“目录”中创建的数组列表中的所有项目,我这样做是这样的......

告诉

if (Directory.entries.size>0)
{
     for (int i=0; i<Directory.entries.size(); i++) // Check size of array
     {
           Directory.entries.get(i).showRecord();
     }
}

目录

public void printItem()      
{
     //I HAVE NO IDEA WHAT GOES HERE
}

入口

public class Entry
{
String name;
String telNo;
public Entry(String aName, String aTelNo )
{
    setNumber(aTelNo);
    setName(aName);
}
// Add methods here
private void setNumber(String aTelNo)
{
    telNo = aTelNo;
}

public String getNumber()
{
    return telNo;
}

private void setName(String aName)
{
    name = aName;
}

public String getName()
{
    return name;
}

public String toString()
{
    return name + "." + telNo;
}


}

但是,我还没有弄清 printItem() 方法中需要做什么,以允许我打印目录中的各个项目。

有人能指出我正确的方向吗?这是我第一次真正跨多个类使用数组列表,我很困惑。

4

3 回答 3

1

由于您已经覆盖了toString类中的Entry,所以您需要做的就是遍历您的 List 并打印每个项目。它将自动调用您的 Entry 类的 toString 并打印返回值:-

将此代码放入您的print方法中,该方法在Directory类中。

public static void print() {
    for (Entry entry: Directory.entries) {
        System.out.println(entry);
    }
}

entriesstatic您在Directory班级中的列表。

从您的Tell课程中,只需调用您的print方法:-

Directory.print();
于 2012-10-27T14:11:44.187 回答
0

现在你没有电话给printItem(); 我假设您的呼叫将.showRecord()被替换printItem()或被删除,因为他们正试图完成同样的事情。

假设您删除.showRecord()并仅使用printItem()它,并且您正在使用某种类型的集合,其中包含entriesDirectory类中命名的数据成员:

public void printItem() {
    for (Entry entry : this.entries) {
        System.out.println(entry);
    }
}

是您所需要的,因为您已经覆盖了类中的toString()函数Entry。这会为您遍历目录中的每个条目,并一次将它们打印在不同的行上。

于 2012-10-27T14:19:18.880 回答
0

您可以使用TreeMap<String, String>保存电话簿的项目列表。TreeMap 将确保您的键按自然顺序(按人名)排序,并且目录中没有重复的名称(每个人的名字都是唯一的)。打印一个条目将是一个简单的String treeMap.get(key);

于 2012-10-27T14:19:28.773 回答