Avatar billede tebsil Nybegynder
26. september 2004 - 16:20 Der er 8 kommentarer

Problem ang. en metode.

Jeg er ikke så øvet i Java.

Der kommer en nullpointer-exception i følgende linje af mit program:
    public void pickUp(Item i)
    {
        int p = randomGenerator.nextInt();
        if(location.itemExists() == true)
        {
        location.removeItem(i);
        items.add(i); // <-----
        }
    else
    {
        System.out.println("The Item is not in the Room.");
    }
    }
hvilket nok betyder, at items er null.

Hvad skal jeg skrive istedet for : items.add(i);?
Avatar billede arne_v Ekspert
26. september 2004 - 16:22 #1
Lyder som om items er null og at du mangler en:

items = new ArrayList();

[eller hvad type den nu er]
Avatar billede tebsil Nybegynder
26. september 2004 - 16:25 #2
Skal jeg skrive det i konstruktoren, eller metoden?
Avatar billede arne_v Ekspert
26. september 2004 - 16:26 #3
Der hvor det passer bedst med logikken i dit program.

Gæt: i constructoren
Avatar billede tebsil Nybegynder
26. september 2004 - 16:31 #4
Det er lidt noget pis, men det har jeg allerede skrevet... :-/

Her er hele klassens kode:

import java.util.*;
/**
* Room laver et rum, med forbindelse til andre rum
* - kan indeholde genstande og besøgende.
*/
public class Room
{
//Fields
    private List rooms;
    private ArrayList items;
    private String name;
    private Random randomGenerator=new Random();
//Constructor.
    /**
    * rooms is a list of length 4 where
    *  rooms.get(0) refers to the room in direction EAST
    *  rooms.get(1) refers to the room in direction NORTH
    *  rooms.get(2) refers to the room in direction WEST
    *  rooms.get(3) refers to the room in direction SOUTH
    */

    public Room(String name)
        {rooms = new ArrayList(4);
      for (int i = 0; i < 4; i++)
        {rooms.add(i, null);}
   
    items = new ArrayList();
      this.name = name;
        }
//Method
    public void connectTo(int dir, Room r)
        {rooms.set(dir, r);}
//Method
    public boolean roomExists(int dir) {
        return rooms.get(dir) != null;
    }
//Method
    public Room leadTo(int dir)
        {return (Room)rooms.get(dir);}
//Method
    public void addItem(Item i)
        {items.add(i);}
//Method
    public boolean itemExists()
      {
        if (items.size()>0) {
            return true;
            }
            else {
                return false;
                }
    }
//Method
    public Item chooseItem()
        {int itemsSize = items.size(); 
        int p = randomGenerator.nextInt();
          return (Item) items.get(itemsSize);
        }
//Method
    public void removeItem(Item i)
      {System.out.println(items.remove(i) + " has been removed");}

//Den Nye Metode, som jeg er RET usikker på
    public void roomContains(Item i);
    {if(location.roomContains()== true){
        System.out.println("The Item is in the Room.");
    }}
//Method 
    public String toString()
        {return this.name;}
     
}
Avatar billede arne_v Ekspert
26. september 2004 - 16:34 #5
Ja - men jeg kan ikke se pickUp i den klasse !
Avatar billede tebsil Nybegynder
26. september 2004 - 16:36 #6
ups. det jeg heller ikke. Det er vist et helt nyt spørgsmål. Men tak for hjælpen.
Avatar billede arne_v Ekspert
26. september 2004 - 16:43 #7
Så du er all set ?
Avatar billede arne_v Ekspert
24. oktober 2004 - 21:51 #8
??
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