Fabian E.: Iterator auf LinkedList

Hallo,
ersteinmal ein paar auszüge aus meinem prog:

public class WriteIntranet extends HttpServlet
{
    Select sel = new Select();
    public Iterator itNaviHead;
    public Iterator itNaviList;

public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws IOException, ServletException
    {
        response.setContentType("text/xml");
        PrintWriter out = response.getWriter();

out.println("<?xml version="1.0" ?>");

out.println("<daten>");
            out.println("<navigation>");
              try
              {
                  Select naviHead = new Select(1, 0);
                  itNaviHead = sel.listNaviHead.iterator();
                  int i = 1;
                  while( itNaviHead.hasNext() )
                  {
                      out.println("<liste name_l=" "+ itNaviHead.next() +" ">");

Select naviList = new Select(2, i);
                      itNaviList = sel.listNaviList.iterator();
                      int p = 1;
                      while( itNaviList.hasNext() )
                      {
                          out.println("<verweis id_v=" "+ p +" " url_v="#" name_v="  "+ itNaviList.next() +"  " />");
                          p++;
                      }

out.println("</liste>");
                      i++;
                  }
              }
              catch(Exception e)
              {
                  System.out.println("Fehler.....: " + e);
              }
            out.println("</navigation>");
        out.println("</daten>");

out.close();
    }
}
So sieht der anfang eines intranets aus ich versuche ersteinmal die navigation zu erzeugen.
hier hab ich das problem, dass der itartor für die schleife nicht funktioniert und ich bzw. wir finden den fehler nicht! kann mir hier jemand sagen wo der logische fehler ist?

hier ein auszug aus Select.java, der ablauf für die NaviList ist gleich.
 public void selectNaviHead() throws Exception
    {
        try
        {
            result = createDbConnection("SELECT id, name FROM navi_head ORDER BY name ASC");

while(result.next())
            {
                createHashtableVariable( result );
                listNaviHead.add(name);
            }

}
        finally
        {
            closeDbConnection();
        }
    }

  1. Moin Fabian,

    zwei Fragen:
    1. die Methode createDbConnection(...) gibt einen Iterator oder eine Liste zurück?
    2. createHashtableVariable( result )--> willst du tatsächlich aus dem Iterator eine HashtableVariable machen oder etwa nur aus dem nächsten Wert?

    Allgemein ist die Schleife nicht gut konstruiert, weil du am Ende der Liste eine Exception bekommst. der richtige Test auf weitere Elemente wäre result.hasNext() und das jeweilige Element in der Schleife sprichst du besser mit result.next() an.

    liebe Grüße aus Berlin
    lina-

    --
    Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
      1. die Methode createDbConnection(...) gibt einen Iterator oder eine Liste zurück?

      Diese Methode liefert ein ResultSet zurück.

      1. createHashtableVariable( result )--> willst du tatsächlich aus dem Iterator eine HashtableVariable machen oder etwa nur aus dem nächsten Wert?

      Der Name dieser Methode ist noch falsch...ich hatte anfangs mit
      einem Hashtable gearbeitet, aber gemerkt , dass es sich nicht lohnt.
      Es reicht lediglich eine Reihenfolge der Daten in einer Liste.
      In der Methode deklariere ich lediglich zwei Variblen, welche später in der LinkedList zum Teil gespeichert werden.

      Als Zusatz --> Ich bin jetzt erst mit Java angefangen!

  2. Hi,

    hier hab ich das problem, dass der itartor für die schleife nicht funktioniert und ich bzw. wir finden den fehler nicht! kann mir hier jemand sagen wo der logische fehler ist?

    nein, denn "funktioniert nicht" ist keine Fehlerbeschreibung, und ohne Fehlerbeschreibung kann Dir keiner helfen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. moin Cheatah :)

      nein, denn "funktioniert nicht" ist keine Fehlerbeschreibung, und ohne Fehlerbeschreibung kann Dir keiner helfen.

      dass ein Test auf iterator.next() in einer while-schleife aber zwangsläufig zu einer unerwarteten Exception führt sieht man doch ;)

      liebe Grüße aus Berlin
      lina-

      --
      Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)
      1. meine Fehlermeldung

        26.08.2005 13:19:56 org.apache.struts.util.PropertyMessageResources <init>

        INFO: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true

        26.08.2005 13:19:56 org.apache.struts.util.PropertyMessageResources <init>

        INFO: Initializing, config='org.apache.struts.action.ActionResources', returnNull=true

        26.08.2005 13:19:57 org.apache.struts.util.PropertyMessageResources <init>

        INFO: Initializing, config='phase2.ApplicationResources', returnNull=true

        1. moin Fabian E. :)

          meine Fehlermeldung...

          hat aber nicht sooo viel mit der Schleife zu tun ;)

          1. die Methode createDbConnection(...) gibt einen Iterator oder eine Liste zurück?
            Diese Methode liefert ein ResultSet zurück.

          Na da kommen wir der Sache schon mal näher.... halten wir fest: du meinst gar keinen Iterator...

          Sorry Cheatah ;) damit ist meine Interpretation des Fehlers natürlich nicht mehr so trivial und du hattest vollkommen recht!

          Der Name dieser Methode ist noch falsch...ich hatte anfangs mit
          einem Hashtable gearbeitet, aber gemerkt , dass es sich nicht lohnt.
          Es reicht lediglich eine Reihenfolge der Daten in einer Liste.
          In der Methode deklariere ich lediglich zwei Variblen, welche später in der LinkedList zum Teil gespeichert werden.

          Verstehe ich jetzt nicht so ganz.
          Was bisher passiert (so wie ich das sehen kann) - du rufst die MEthode so oft auf, wie du aus der Datenbank Daten bekommen hast und tust jedesmal mit der Methode in der Schleife die gleichen Dinge...

          Als Zusatz --> Ich bin jetzt erst mit Java angefangen!

          mit Deutsch auch? *scnr*

          liebe Grüße aus Berlin
          lina-

          --
          Self-Code: ie:% fl:( br:^ va:) ls:/ fo:| rl:( ss:) de:] js:| mo:)