0
public class VenueManagement extends JApplet
{

    HashSet<Venue> vset;

    public void addValues()
    {
        vset = new HashSet<Venue>();
        Venue outstage = new VenueOut("Outdoor Stage");
        Venue libstage = new VenueOut("Library Stage");
        Venue audi = new VenueMB("Audi", true);
        Venue lt1 = new VenueMB("LT1", true);

        Event e1 = new Event("Drama", 11);
        Event e2 = new Event("Dance", 21);
        Event e3 = new Event("Music", 31);
        Event e4 = new Event("Art", 41);
        Event e5 = new Event("Literary", 51);
        Event e6 = new Event("Informals", 61);
        Event e7 = new Event("Sport", 71);
        Event e8 = new Event("Tech", 81);

        outstage.addEvent(1, e1);
        outstage.addEvent(2, e2);
        libstage.addEvent(3, e3);
        libstage.addEvent(4, e4);
        audi.addEvent(5, e5);
        audi.addEvent(6, e6);
        lt1.addEvent(7, e7);
        lt1.addEvent(8, e8);

        vset.add(outstage);
        vset.add(libstage);
        vset.add(audi);
        vset.add(lt1);

        Iterator<Venue> vset_iter = vset.iterator();
        while (vset_iter.hasNext())
        {
            System.out.println(vset_iter.next().vname + " AND " + vset_iter.next());
            System.out.println("***********************************************");
        }
    }

    // ///////////////////////////////////////////////////INIT////////////
    public void init()
    {
        this.setLayout(new BorderLayout());
        addValues();
        this.add(menubar, BorderLayout.NORTH);
    }

}

これは、私が作ろうとしているより大きなアプレットの一部です。私は問題を抱えていたので、プログラムのこの部分にそれを特定しました。vname理論的には、40行目と41行目からすべての対応するオブジェクトのリストを取得する必要がありますが、Venueこれしか取得していないようです:

LT1 AND labexam.VenueMB@3559b0a6
***********************************************
Library Stage AND labexam.VenueOut@12fbbad2
***********************************************

何らかの理由で、他の 2 つのオブジェクトとその名前を取得できません。

これは非常に単純なコードです。私は Iterator for を作成しvset、それを while ループで繰り返し処理しています。

どんな手掛かり?

4

2 に答える 2

5

Iterator#next繰り返しの次の要素を返します

Iterator<Venue> vset_iter = vset.iterator();
while (vset_iter.hasNext()){
      Venue v= vset_iter.next();
      // you can retrieve the venue object's field here
      //System.out.println(v.vname + " AND " + v);
      //System.out.println("***********************************************");
}
于 2012-12-05T10:34:54.953 に答える
0

ループ内で next() を 2 回呼び出すことは避けてください。Venues をスキップしています。

Iterator<Venue> vset_iter = vset.iterator();
Venue venue;
    while (vset_iter.hasNext())
    {
        venue = vset_iter.next();
        System.out.println(venue.vname + " AND " + venue.otherString);
        System.out.println("***********************************************");
    }
于 2012-12-05T10:39:40.773 に答える