compareTo błąd przy porównywaniu

0

Witam. Jest to mój pierwszy post, zaczynam dopiero programowanie w Java, dlatego proszę o wskazówkę bądź podpowiedź gdzie mogłem coś spierniczyć.

Otóż problem wygląda następująco. Program ma porównywać podane lokalizacje np. budynek nr1 porównuje z piętrem 3 . Ogólnie Tworzenie struktury budynków ale z porównaniem coś już nie tak.

Podaje kod tutaj

import java.util.ArrayList;

public class zad6
{
    public static void main(String[] args)
    {
        Building building1 = new Building(1);
        
        Floor floor11 = new Floor();
            floor11.addRoom(new Room());
            floor11.addRoom(new Room());
            floor11.addRoom(new Room());
            floor11.addRoom(new Room());
    
        Floor floor12 = new Floor();
            floor12.addRoom(new Room());
            floor12.addRoom(new Room());
            floor12.addRoom(new Room());
            
        Floor floor13 = new Floor();
            floor13.addRoom(new Room());
            floor13.addRoom(new Room());
            
        Floor floor14 = new Floor();
            floor14.addRoom(new Room());
            
        Floor floor15 = new Floor(); // brak pokoi
        
        
        building1.addFloor(floor11);
        building1.addFloor(floor12);
        building1.addFloor(floor13);
        building1.addFloor(floor14);
        building1.addFloor(floor15);
        
        building1.opis();
        
        Building building2 = new Building(2);
        
        Floor floor21 = new Floor();
            floor21.addRoom(new Room());
            floor21.addRoom(new Room());
            floor21.addRoom(new Room());
            
        Floor floor22 = new Floor();
            floor22.addRoom(new Room());
            floor22.addRoom(new Room());
            
        building2.addFloor(floor21);
        building2.addFloor(floor22);
        
        building2.opis();
        
        Building building3 = new Building(3);
        building3.opis();
        
        System.out.println(building1.Identy.compareTo(floor21.Identy)); // tutaj się coś dzieje nie tak ?!?!
    
    }
};
class Identy implements Comparable<Identy>
{
    int noBuilding;
    int noRoom;
    int noFloor;
    
    public Identy()
    {
        int noBuilding = 0;
        int noRoom = 0;
        int noFloor = 0;
    }
    
    public int getNoBuilding(){ return noBuilding; }
    public int getNoRoom(){ return noRoom; }
    public int getNoFloor(){ return noFloor; }
    
    public void setNoBuilding(int noB){noBuilding = noB; }
    public void setNoRoom(int noR){noRoom = noR; }
    public void setNoFloor(int noF){noFloor = noF ;}
    
    
    public int compareTo(Identy obiekt)
    {
        return new Integer(noBuilding).compareTo(obiekt.noFloor);
    
    }
};
 
abstract class Lokalizacja {
    protected Identy id;

    public abstract void opis();
};
class Building extends Lokalizacja
{
    protected static Identy id;
    protected ArrayList<Floor>listFloor;
    
    private int floor = 0;// licznik pięter
    
    
    public Building(int noB)
    {
        id = new Identy();
        id.setNoBuilding(noB);
        listFloor = new ArrayList<Floor>();
    }
    
    public static Identy getId(){return id; }

    public void addFloor(Floor f)
    {
        f.setBuilding(this);
        f.id.noFloor = floor;
        listFloor.add(f);
        floor++;
    }

    public void opis()
    {    System.out.println("===============================");
        System.out.println("Budynek nr: " +id.noBuilding);
        for(Floor floor : listFloor)
        {floor.opis();}
        //System.out.println("Pietro nr:"+ id.noFloor);
    }

};
class Floor extends Lokalizacja 
{
    protected static Identy id;
    protected ArrayList<Room>listRoom;
    protected ArrayList<Floor>listFloor;
    
    
    private Building parentBuilding; // rodzic budynku
    private int room = 0; // licznik pokoi
    private int floor = 1;// licznik pięter
    
    public Floor()
    {
        id = new Identy();
        listRoom = new ArrayList<Room>();
        listFloor = new ArrayList<Floor>();

    }
    
    public static Identy getId(){ return id;}

    public void setBuilding(Building b)
    {
        parentBuilding = b;
        id.setNoBuilding(b.id.noBuilding);
    }
    
    public void addRoom(Room r)
    {
        r.setFloor(this);
        r.id.noRoom = room;
        listRoom.add(r);
        room++;
    }
    
    public void opis()
    {    
        System.out.println("Pietro nr : " + id.noFloor);
        for(Floor floor : listFloor)
        {floor.opis();}
        id.noFloor = (id.noFloor - 1);
        
        
        //System.out.println("Pietro nr: " + id.noFloor );
        for(Room room : listRoom)
        {room.opis();}
        System.out.println("Liczba pokoi to: "+ room);
        
        
    }

};
class Room extends Lokalizacja
{
    protected ArrayList<Room>listRoom;
    protected static Identy id;
    private Floor parentFloor;
    private int room = 1; // licznik pokoi
    
    public Room()
    {
        id = new Identy();
        listRoom = new ArrayList<Room>();
    }
    
    public void setFloor(Floor f)
    {
        parentFloor = f;
        id.setNoBuilding(f.id.noBuilding);
        id.setNoFloor(f.id.noFloor);
    }
    
    public void opis()
    {
       // System.out.println("Liczba pokoi to: "+ room);
        //for(Room room : listRoom)
        //{room.opis();}
        
    }
};

W sumie to będzie zmiana : compareTo trzeba napisać samemu.


public int compareTo(Identy obiekt){

		   int comparison = new Integer(noBuilding).compareTo(obiekt.noBuilding);
		   if (comparison != 0)
		      return comparison;
		   comparison = new Integer(noFloor).compareTo(obiekt.noFloor);
		   if (comparison != 0)
		      return comparison;
		   comparison = new Integer(noRoom).compareTo(obiekt.noRoom);
		   if(comparison !=0)
			   return comparison;
		return comparison;
		}


.Tutaj wyrzuca błąd NullPointerException. Ogólnie dla wywołania tego ustrojstwa będziemy potrzebować budynek np.building1.Identy.compareTo(floor22.Identy); i tutaj ma wyświetlić różnicę między tymi obiektami ,tylko nie wiem jak ;/

0

Daj stacktrace

1 użytkowników online, w tym zalogowanych: 0, gości: 1