Avatar billede kovalt Nybegynder
05. december 2002 - 12:47 Der er 7 kommentarer og
1 løsning

remove fra HashMap

Hej

jeg har følgende:

        String itemWanted = command.getSecondWord();
        boolean isItemInRoom = currentRoom.doItemExistInRoom(itemWanted);
       
        if (!isItemInRoom) {
            System.out.println("The requested item is not in this room");
        }
        else {
            Item itemToTake = (Item) itemMap.remove(itemWanted);
            player.takeItem(itemToTake);
            System.out.println(itemWanted + " er nu samlet op");
        }   

og

    public void takeItem(Item item) {
        inventory.put(item.getName(), item);
    }

det virke som sådan fint nok bortset fra et den opsamlede ting ikke bliver slettet fra itemMap.... til gengæld bliver det overført til inventory.....

Jeg kan jo så regne ud at der er noget galt med min itemMap.remove(itemWanted) - men hvad?
Avatar billede carstenknudsen Nybegynder
05. december 2002 - 12:49 #1
Du bliver nødt til at vise din metode for at vi
kan se hvad der er galt.
Avatar billede di8leva Nybegynder
05. december 2002 - 12:52 #2
som det ser ut skall du remove:a med en "key" og inte med object

og det ser ud til att du skall skrive
itemMap.remove(itemWanted.getName());
Avatar billede kovalt Nybegynder
05. december 2002 - 13:01 #3
itemWanted indeholder den string der efterfælger en kommando. itemWanted skulle således gerne indeholde objektets key.

hvor meget kode er det i skal se?
Avatar billede kovalt Nybegynder
05. december 2002 - 13:05 #4
her er hele metoden:

  private void pickUpItem(Command command)
    {
        if (!command.hasSecondWord()) {
            System.out.println("Pick what up?");
            return;
        }
        String itemWanted = command.getSecondWord();
        boolean isItemInRoom = currentRoom.doItemExistInRoom(itemWanted);
       
        if (!isItemInRoom) {
            System.out.println("The requested item is not in this room");
        }
        else {
            Item itemToTake = (Item) itemMap.remove(itemWanted);
            player.takeItem(itemToTake);
            System.out.println(itemWanted + " er nu samlet op");
        }   
    }

og

    public void takeItem(Item item) {
        inventory.put(item.getName(), item);
    }
Avatar billede kovalt Nybegynder
05. december 2002 - 13:07 #5
Som det er nu virke funktionaliteten som om der ikke stod remove med get
Avatar billede di8leva Nybegynder
05. december 2002 - 13:24 #6
hvis du lægger objekt i itemMap som du gør i inventory (inventory.put(item.getName(), item) )

er det itemMap.remove(itemWanted.getName()) du skall bruge
Avatar billede di8leva Nybegynder
05. december 2002 - 13:25 #7
ah, sorry, my bad....
læste ikke riktigt...
ignore....
Avatar billede carstenknudsen Nybegynder
05. december 2002 - 13:45 #8
Den metode er ligegyldig. Vi kan ikke se hvad itemMap er
og hvordan dens metoder er defineret. Jeg tror dog at di8leva
har ret i at du skal have fat i getName() når du fjerner
objekter, men vi kan strengt taget ikke se hvor det
sker og om det overhovedet sker. Skriv erklæringen
af itemMap, såsom: HashMap itemMap = new HashMap();
eller hvad det nu er.
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