Avatar billede ladbye Nybegynder
18. januar 2006 - 16:50 Der er 2 kommentarer og
1 løsning

Fjerne objekt og returnere string

Er igang med en opgave hvor jeg laver et DVD-katalog. Det består af to klasser (DVDCatalouge og MovieDVD), hvor når man opretter en film i DVDCatalogue, opretter den det som et objekt af MovieDVD.

Nu er jeg igang med at lave en remove-funktion og indtil nu fjerner den også det givne objekt, men den returnere ikke alt den skal.

Et MovieDVD-objekt indeholder Title, Description, Director og Duration, hvor duration er et int og de andre strenge.

Indtil videre, fjerner removeDVD objektet og returnere "Title/MovieDVD@enrækketalogbogstaver", men den skulle gerne returnere "Title/Description/Director/Duration". Håber det er til at forstå, ellers har jeg koden nedenunder som vejleder.

Hvordan skal removeDVD se ud, for at den returnere informationerne korrekt og stadig fjerner objektet?

Koden til DVDCatalogue
------------------------------------------------------------------------
import java.util.HashMap;
import java.util.Iterator;

public class DVDCatalogue
{
    private String owner;
    private HashMap allDVDs;

    public DVDCatalogue( String name )
    {
        owner = name;
        allDVDs = new HashMap();
    }

    public void addDVD( String title, String description, String director, int duration)
    {
        MovieDVD dvd = new MovieDVD(title,description,director,duration);
        allDVDs.put(title,dvd);
    }

    public Object getDVD( String title )
    {
        Object dvd = (MovieDVD)allDVDs.get(title);
        return dvd;
    }

    public void printAllDVDs()
    {
        Iterator iter = allDVDs.values().iterator();
        while(iter.hasNext()) {
            MovieDVD dvd = (MovieDVD)iter.next();
            dvd.printMovieDVD();
            System.out.println();
        }
    }

  public String removeDVD( String title )
  {
      if(getDVD(title) != null) {
          return title + "/" + (MovieDVD)allDVDs.remove(title);
      }
      else {
          return null;
      }
  }
}
Avatar billede mikkelbm Nybegynder
18. januar 2006 - 16:58 #1
Det fordi du ikke har en toString på din MovieDVD.
Avatar billede mikkelbm Nybegynder
18. januar 2006 - 17:00 #2
Prøv i din MovieDVD klasse at lave følgende metode:

public String toString()
{
  return "Title: " + title + "\nDescription: " + description + "\nDirector: " + director + "\nDuration: " + duration + "min";
}

Medmindre du har ændret i din klasse fra dit tidligere spørgsmål, så burde du kunne indsætte ovenstående metode som den er.
Avatar billede mikkelbm Nybegynder
18. januar 2006 - 17:03 #3
Men en bedre mulighed (i mine øjne) ville være at returnere det objekt du fjerner:

  public MovieDVD removeDVD( String title )
  {
      if(getDVD(title) != null) {
          return (MovieDVD)allDVDs.remove(title);
      }
      else {
          return null;
      }
  }

På den måde kan du selv vælge hvad du vil udskrive, når du sletter.

F.eks:

MovieDVD dvd = dvdCatalogue.removeDVD ("Seven");
System.out.println (dvd.printMovieDVD()); // Eller kalde de andre metoder du har på din klasse.
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