0

別のクラスの配列リストの項目をリストしようとしています。

全部で3つのクラスがあります

教えてください-メインプログラム

アイテム-個々の電話帳アイテムを作成するクラス

ディレクトリ-すべてのアイテムを格納するディレクトリオブジェクト。

私がやろうとしているのは、「ディレクトリ」に作成された配列リスト内のすべてのアイテムをリストし、このように実行することです。

教えて

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、必要なのはリストを繰り返し処理して各アイテムを印刷することだけです。EntryクラスのtoStringが自動的に呼び出され、戻り値が出力されます。

このコードをクラスprintにあるメソッドに入れます。Directory

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

entriesクラスにあるstaticリストです。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 に答える