Mit einer Klasse Objekte für eine andere Klasse erstellen.

Jetzt klappt erst mal alles! Ich weiß wohl doch mehr als ich mir zu traue.. :D

PHP:
public class Area
{

    private int id;
    private String name;
    private String description;
    private Room room;
    private String[][] Room[][];
    Room[][] r;

    
    public Area(int id, String name, String description)

    {
        this.id = id;
        this.name = name;
        this.description = description;
        

                int n = 4;  
                r = new Room[n][n];
                int c = 1;
                for (int i=0; i < n; i++) 
                {
                        for (int j=0; j < n; j++)  
                        {    c=i*4+j+1;
                             r[i][j] = new Room(0, "name", "description", i, j, c);
                        }
                }
    }
    
    public int     id()          {return id;}
    public String  name()        {return name;}
    public String  description() {return description;}   

    

    public void look()
    {
        int n = 4;  
        int c = 1;
        for (int i=0; i < n; i++) 
                {
                        for (int j=0; j < n; j++, c++)  
                        {
                            System.out.println(r[i][j].toString());
                        }
                     System.out.println();
                }
    }

}

Danke Leute!

MfG New2Java
 
Okay, zurück zum Topic. Folgendes Problem.

Ich erstelle ein neues Objekt "Raum" in der Klasse "Raum" und möchte dieses in einem Array speichern und einem bestimmten Objekt "Area" zu weisen.

Klasse Raum
PHP:
    private int i;
    private int j;
    private Area area;
    private String[][] Room[][];
    Room[][] r;
....
...
public void transfer(Area newArea)
    {
        area = newArea;
        r[1][2] = new Room(0, "Neues", "Objekt", 1, 2, 0);
    }
Dies ist nur ein Beispiel, für r[i][j] bekomme ich es dann auch selbst hin.

Also: Dieser array r[1][2] existiert schon in der Klasse Area, wie kann ich diesen nun dort überspeichern oder besser übergeben?


Oder warum bekomme ich hier die NullPointerException?

PHP:
public class Room
{

    private int id;
    private String name;
    private String description;
    private int i;
    private int j;
    private int c;
    private Area area;
    private String[][] Room[][];
    Room[][] r;

    public Room(int id, String name, String description, int i, int j, int c)

    {
        this.id          = id;
        this.name        = name;
        this.description = description;
        this.i           = i;
        this.j           = j;
        this.c           = c;
    }

    
    public int     id()          {return id;}
    public String  name()        {return name;}
    public String  description() {return description;}
    public int     i()           {return i;}
    public int     j()           {return j;}
    public int     c()           {return c;}
    public Room[][] Getr()        {return r;}

       
       
    @Override
    public String toString(){
        return 
          "[" + id() + "]" 
        + "  [" + name() + "]" 
        + "  [" + description() + "]"
        + "  [" + i() + "/" + j() + "]"
        + "  [" + c() + "]";

    }
    
    public void transfer(Area newArea)

    {
        area = newArea;
        r[1][2] = new Room(0, "Neues", "Objekt", 1,  2, 0);
        System.out.println("Ihr habt den Raum einer neuen Area zugeordnet.");
    }
    

    

}

MfG New2Java
 
Zuletzt bearbeitet:
Hi,

Die NullPointer bekommst du, weil du in der transfer-Methode versuchst, auf eine Stelle der Room-Matrix zuzugreifen, die Variable "r" aber noch gar nicht erzeugt wurde.

Was ist denn area? Eine Liste? Oder wie willst den Raum darin speichern?

Übrigens: Setz das Ganze mal in Java-Code-Tags, dann stehen Zeilenangaben da ;)

Gruß
 
Die r[i][j] werden in Area erzeugt.

Hier mal meine Codes:

Java:
public class Area
{
    private int id;
    private String name;
    private String description;
    private Room room;
    private String[][] Room[][];
    private Room[][] r;

    
    public Area(int id, String name, String description)

    {
        this.id = id;
        this.name = name;
        this.description = description;
        
        

                int n = 4;  
                r = new Room[n][n];
                int c = 1;
                for (int i=0; i < n; i++) 
                {
                        for (int j=0; j < n; j++)  
                        {    c=i*4+j+1;
                             r[i][j] = new Room(0, "name", "description", i, j, c);
                             this.r = r;
                        }
                }
    }
    
    public int     id()          {return id;}
    public String  name()        {return name;}
    public String  description() {return description;}
    public Room[][] Getr()       {return r;}

    

    public void look()
    {
        int n = 4;  
        int c = 1;
        for (int i=0; i < n; i++) 
                {
                        for (int j=0; j < n; j++, c++)  
                        {
                            System.out.println(r[i][j].toString());
                        }
                     System.out.println();
                }
    }

}

Java:
public class Room
{

    private int id;
    private String name;
    private String description;
    private int i;
    private int j;
    private int c;
    private Area area;
    private String[][] Room[][];
    private Room[][] r;

    public Room(int id, String name, String description, int i, int j, int c)

    {
        this.id          = id;
        this.name        = name;
        this.description = description;
        this.i           = i;
        this.j           = j;
        this.c           = c;
    }

    
    public int     id()          {return id;}
    public String  name()        {return name;}
    public String  description() {return description;}
    public int     i()           {return i;}
    public int     j()           {return j;}
    public int     c()           {return c;}


       
       
    @Override
    public String toString(){
        return 
          "[" + id() + "]" 
        + "  [" + name() + "]" 
        + "  [" + description() + "]"
        + "  [" + i() + "/" + j() + "]"
        + "  [" + c() + "]";

    }
    
    public void transfer(Area newArea)

    {
        area = newArea;
        r[1][2] = new Room(0, "Neues", "Objekt", i, j, 0);
        System.out.println("Ihr habt den Raum einer neuen Area zugeordnet.");
    }
    

    

}


Ich möchte eigentlich eine Gruppe von Array-Objekten in beiden Klassen nutzen.

Edit: Achja bei area.r[1][2] bekomme ich den "has private access in" Wahrscheinlich muss ich r in Area um deklarieren, so dass es zugänglich ist, aber wie?



Klasse "Area": Erzeugt ein Objekt "Area" das 16 Objekte "Room" enthält.
Klasse "Room": Erzeugt ein freies Objekt "Room" und soll nun die Methode bekommen, einer Area zugewiesen zu werden und das Objekt "Room", was vorher in der Area an Position (i,j) war überschreiben.


MfG New2Java
 
Zuletzt bearbeitet:
Okay, ich hätte in area einfach private auf public setzen müssen ~~ und dann area.r[i][j] und alles klappt.

Java:
    public Room[][] r;
 
Zurück