Problem z tablicą

0

Mam problem z tablicą przechowującą obiekty typu Room zdefiniowane w osobnym pliku.
Nie wiem dlaczego, ale tablica ma długość 0 a nie capacity.
Błąd wyjścia poza tablicę, ten sam błąd miałem z ArrayList (Null Pointer )
Proszę również o pomoc w zamianie zwykłej tablicy na ArrayList.

import java.util.*;
public class Hotel {
    
    
    public Hotel(String name, int capacity){
        this.name = new String(name);
        rooms_count = 0;
        this.capacity = capacity;
        Room rooms[] = new Room[capacity];
    }
    
    public void capacity(){
        System.out.println("Ilosc zdefiniowanych pokoi " + rooms_count );
        System.out.println("Maksymalna ilosc pokoi " + capacity);
    }
    
    public void showHotel(){
        System.out.println("Nazwa hotelu: " + name);
        System.out.println("Ilość pokoi: " + rooms_count);
        for (int i = 0; i<rooms_count; i++){
            rooms[i].ShowRoom();
        }
       
    }
    
    public void addRoom(int nr, int beds){
        
        if(rooms.length > rooms_count){
            Room r = new Room(nr,beds);
            rooms[rooms_count] = r;
            rooms_count++;
        }
        else{
            System.out.println("Nie mozna utworzyc dodatkowego pokoju");
        }
        
    }
    
    
    protected String name;
    protected int rooms_count;
    protected int capacity;
    Room rooms[];
    
    
}

Plik Room

public class Room{
    
    public Room(int nr, int beds){
        this.nr = nr;
        this.beds = beds;
    }
    public void ShowRoom(){
        System.out.println("Pokoj nr " + nr);
        System.out.println("Ilosc lozek " + beds);
    }
    
    protected int nr;
    protected int beds;
}

Plik Test

public class Test {
    public static void main(String [] args){
        Hotel hotel1 = new Hotel("Hotel 1" , 10);
        
        
        hotel1.showHotel();
        hotel1.capacity();
        
        hotel1.addRoom(1,3);
      
    }
}
0

Błąd masz w metodzie:

    public Hotel(String name, int capacity){
        this.name = new String(name);
        rooms_count = 0;
        this.capacity = capacity;
        Room rooms[] = new Room[capacity];
    }

masz zadeklarowaną zmienną rooms globalnie, a Ty deklarujesz jeszcze lokalnie. Pamiętaj, że rooms != this.rooms.
Poza tym to nie jest tablica, powinno być Room[] rooms

Jednym słowem powinieneś zapisać:

    public Hotel(String name, int capacity){
        this.name = new String(name);
        rooms_count = 0;
        this.capacity = capacity;
        this.rooms = new Room[capacity];
    }

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