18. september 2003 - 14:54Der er
30 kommentarer og 1 løsning
(Cast) i return statements.
Kære eksperter,
I nedenstående program ønsker jeg, i metoden leadsTo(,) at returnere hvilket rum der er tale om. Når jeg gør det som jeg gør får jeg et objekt ud i stedet.
import java.util.*;
/** * Room... * * @author Michael E. Caspersen * @version 26 March 2003 */ public class Room {
private List rooms; private Collection items; private String name;
/** * 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 * * items is a collection with references to the items in the room * * name is the name of the room (useful for testing) */
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; }
/** * Connects the room to room <code>r</code> in direction <code>dir</code> */ public void connectTo(int dir, Room r) { rooms.set(dir, r); }
/** * Returns whether there is a room in direction <code>dir</code> from this room */ public boolean roomExists(int dir) {
/** * Returns the room connected to this room in direction <code>dir</code> */
public Room leadsTo(int dir) {
Room a = "I retning " + dir + " er rummet" + (String)rooms.get(dir); return a; }
/** * Adds item <code>i</code> to the room */ public void addItem(Item i) { items.add(this); }
/** * Return whether there are any items in this room */ public boolean itemExists() {
if (items.size()>0) { return true; } else { return false; } } /** * Return an Item chosen randomly among all items in the room */ public Item chooseItem() {
return null; // kun indsat for at tilfredsstille oversætteren }
/** * Removes item <code>i</code> from the room */ public void removeItem(Item i) { items.remove(this); }
public class Driver { private Room Køkken;//class scope dvs kan bruges i helke klassen private Room Stue;
public void test() { Room køkken = new Room("Køkken");//method scope dvs kan kun bruges i metoden Room stue = new Room("Stue"); køkken.connectTo(1,Stue); køkken.leadsTo(1); }
Det vil kompile men Køkken og Stue vil kun være initialiserede inden i test() metoden. Hvis du vil initialisere dine class-variable skal du erstatte Room Køkken = new Room("Køkken"); med this.Køkken = new Room("Køkken"); og det samme for Stue.
public class Driver { private Room Køkken; private Room Stue;
public void test() { this.Køkken = new Room("Køkken"); this.Stue = new Room("Stue"); Køkken.connectTo(1,Stue); System.out.println(Køkken.strLeadsTo(1)); }
} Det er i øvrigt ikke standard at bruge stort begyndelsesbogstav til varible
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.