Avatar billede kube Nybegynder
04. marts 2002 - 21:13 Der er 18 kommentarer og
1 løsning

bladre i en hægtet liste

er der noget der kan hjælpe med at lave en metode der kan bladre i en hægtet liste?
min LISTE ser sådanne ud!
************************************
class VideoListe
{

    class listeElement
    {
        Videoer v;
        listeElement forrige, naeste;

        public listeElement(Videoer nyVideo)
        {
            v = nyVideo;
            forrige = null;
            naeste = null;
        }

    }


    private listeElement foerste, sidste;

    VideoListe()
    {
        this.foerste= null;
        this.sidste= null;
    }

    public void indsaet(Videoer hv)
    {
        listeElement ny = new listeElement(hv);

        if (foerste == null)
        {
            foerste = ny;
            sidste = ny;
        }

        else
        {
            listeElement aktuel = foerste;

            if (alfabetiskFoer(ny.v, foerste.v)) {
            ny.naeste = foerste;
            foerste.forrige = ny;
            foerste = ny;

        }
        else
        {
            while (aktuel.naeste!=null && !alfabetiskFoer(ny.v, aktuel.naeste.v))
                aktuel = aktuel.naeste;

                ny.naeste = aktuel.naeste;
                ny.forrige = aktuel;
                aktuel.naeste = ny;

            if (ny.naeste!=null)
                    ny.naeste.forrige = ny;

            else sidste = ny;
        }


        }
    }


    private boolean alfabetiskFoer(Videoer v1, Videoer v2)
    {
        if (v1.getoTitel().compareTo(v2.getoTitel())<=0)
                return true;

        else return false;
    }

   
********************************'
håber nogen kan hjælpe
hilsen kube
Avatar billede 1borup1 Nybegynder
04. marts 2002 - 21:50 #1
ja ja, den er let nok.
Du laver bare følgende metoder :
public void frem()
{when (ny.naeste != null)
ny.naeste = ny
public void tilbage ()
{(ny.forrige != null)
ny.forrige = ny}

Jeg har testet det, det virker !!!
Avatar billede kube Nybegynder
04. marts 2002 - 21:55 #2
jeg vil lige prøve at implementere det i mit program....vender tilbage, men foreløbig tak!
Avatar billede kube Nybegynder
04. marts 2002 - 22:01 #3
det virker sku ikke! "when" har jeg aldrig hørt om før - ka du ikke lægge helle koden ud???
Avatar billede disky Nybegynder
04. marts 2002 - 22:51 #4
public void frem()
{
  if(ny.naeste != null)
  {
    ny.naeste = ny
  }
}

public void tilbage ()
{
  if(ny.forrige != null)
  {
    ny.forrige = ny}
  }
}
Avatar billede kube Nybegynder
04. marts 2002 - 23:30 #5
det må jeg prøve disky
Avatar billede kube Nybegynder
04. marts 2002 - 23:33 #6
compileren har problemmer med variablen ny...skal den erklæres i klassen listeElement eller hva??
Avatar billede stemp Nybegynder
05. marts 2002 - 00:50 #7
Det er fordi ny bliver defineret inde i din indsaetmetode. Du skal i stedet definere et listeelementobjekt øverst i din Listeklasse, f.x. aktueltElement, og du vil så kunne bruge dette element nede i dine metoder.
Avatar billede kube Nybegynder
05. marts 2002 - 00:57 #8
class listeElement
    {
        Videoer v;
        listeElement forrige, naeste, aktuelElement;

        public listeElement(Videoer nyVideo)
        {
************************
er det sådan du mener? og så skal "ny" i metoderne ændres til aktuelElement, men det aktuelElement er jo null, hvis det ikke sættes lig et eller andet???
Avatar billede stemp Nybegynder
05. marts 2002 - 01:00 #9
nej det skal defineres i din Liste klasse, ikke ListeElementklassen. Ja det er null, men i din indsaetmetode tilføjer du:

        if (foerste == null)
        {
            foerste = ny;
            sidste = ny;
            aktuelElement = foerste;
}
Avatar billede stemp Nybegynder
05. marts 2002 - 01:02 #10
ja, og så skal ny ændres til aktuelElement
Avatar billede kube Nybegynder
05. marts 2002 - 01:07 #11
det virker sku meget abstakt for mig, men jeg må jo prøve indtil jeg lærer det??
Avatar billede jakoba Nybegynder
05. marts 2002 - 04:46 #12
LIsteElement ny;

public void frem()
{
  if(ny.naeste != null)
  {
    ny = ny.naeste;
  }
}

public void tilbage ()
{
  if(ny.forrige != null)
  {
    ny = ny.forrige;
  }
}

:-)) JakobA
Avatar billede kube Nybegynder
05. marts 2002 - 10:34 #13
JakobA - jeg får ingen fejl når jeg kompiler, men ny må skulle sættes = et eller andet et sted i koden - når jeg udskriver fra listen  bliver der kastet en NullPointerException, når jeg bruger ny.getTitel(); det virker ellers hvis jeg bare udskriver den første - foerste.getTitel();
håber du kan hjælpe mig...
Avatar billede jakoba Nybegynder
06. marts 2002 - 11:05 #14
Det vi mangeler er en begyndelse. en funktion der udfører noget "nu vul jeg bladre" initiering.

ListeElement ny;
booleal bladringInitieret = false;

public void jegVilBladre() {
  ny = foerste;
  bladringInitieret = true;
}; //end jegVilBladre()

public void frem()
{
  if ( !bladringInitieret ) return;
  if(ny.naeste != null)
  {
    ny = ny.naeste;
  }
}

public void tilbage ()
{
  if ( !bladringInitieret ) return;
  if(ny.forrige != null)
  {
    ny = ny.forrige;
  }
}

mvh JakobA
Avatar billede jakoba Nybegynder
06. marts 2002 - 11:07 #15
Ups:  booleal  ->  boolean
Avatar billede kube Nybegynder
06. marts 2002 - 11:28 #16
JakobA, hvis jeg prøver at udskrive med metoden hentTitel() med ny.v.hentTitel(), som er i bunden vil den ikke udskrive, men hvis jeg bruger foerste.v.hentTitel() kan den godt udskrive den første i listen, hvad skal der ændres sådan, så ny kan bruges??
******************************************
listeElement ny;
    boolean bladringInitieret = false;

    public void jegVilBladre() {
      ny = foerste;
      bladringInitieret = true;
    }; //end jegVilBladre()

    public void frem()
    {
      if ( !bladringInitieret ) return;
      if(ny.naeste != null)
      {
        ny = ny.naeste;
      }
    }

    public void tilbage()
    {
      if ( !bladringInitieret ) return;
      if(ny.forrige != null)
      {
        ny = ny.forrige;
      }
}

    //nedenstående er hentmetoder der gør det muligt fra GUIen at udskrive
    //og bladre i listen af Videoer
    public String hentTitel()
    {
        return ny.v.getoTitel();
    }
Avatar billede kube Nybegynder
06. marts 2002 - 11:30 #17
så man også kan bruge de frem() og tilbage() metoder med ny, som du har programmeret..
Avatar billede kube Nybegynder
06. marts 2002 - 13:33 #18
nu har jeg fået den til at udskrive med ny.hentTitel - men jeg kan ikke bladre i listen! der må være noget der skal laves om i frem().
Avatar billede kube Nybegynder
06. marts 2002 - 15:15 #19
så drenge! nu har jeg rodet med det, og fundet løsningen...
******************************
public void frem()
{
    if(ny==null)
    {
        ny= foerste;
    }
    else ny= ny.naeste;
}
********************************'''
ellers tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester