Exception in thread "main" java.lang.NullPointerException at main.main(main.java:56)

0

Witam.

Zaznaczam że w javie jestem zielony.

Mam projekt do zrobienia, który ma służyć rezerwacjom w kinie.

Oto kod:

 import java.util.Scanner;

public class main {

    public static void wyswietl_menu_glowne(){          //Menu główne
        System.out.print("System rezerwacji miejsc\n");
        System.out.print("Wybierz opcje:\n\n");
        System.out.print("1) Dodaj rezerwacje\n");
        System.out.print("2) Usuń rezerwacje\n");
        System.out.print("3) Sprawdz miejsce\n");
        System.out.print("4) Wyswietl wszystkie miejsca\n");
        System.out.print("5) Wyswietl wolne miejsca\n");
        System.out.print("6) Wyswietl zarezerwowane miejsca\n");
        System.out.print("0) Zamknij system\n");
    }

    public static void main(String[] args) {
        Miejsce rezerwacja = new Miejsce();
        Sala sala = new Sala();
        Kino kino = new Kino();

        // Miejsce testowe

        //rezerwacja.wypisz();
        //rezerwacja.rezerwuj();
        //rezerwacja.wypisz();
        //rezerwacja.anuluj_rezerwacje();
        //rezerwacja.wypisz();

        // Koniec miejsca testowego

        String wybor;
        int numer_sali;
        Scanner odczyt = new Scanner(System.in);
        wyswietl_menu_glowne();
        wybor = odczyt.nextLine();

        while(wybor != "0"){
            switch(wybor){
            case "1": 
                System.out.print("Dodaj rezerwacje\n");
                break;
            case "2": 
                System.out.print("Usun rezerwacje\n");
                break;
            case "3": 
                System.out.print("Sprawdz rezerwacje\n");
                break;
            case "4": 
                System.out.print("Podaj numer sali: \n");
                numer_sali = odczyt.nextInt();
                numer_sali = numer_sali - 1;

                if((numer_sali <= 4) && (numer_sali >= 0)){
                    kino.wszystkie_sale[numer_sali].wyswietl_wszystkie_miejsca();
                }
                else{
                    System.out.print("Nie ma takiej sali.\n");
                }

                System.out.print("Wciśnij dowolny przycisk by powrócić do menu.\n");
                wyswietl_menu_glowne();
                break;
            case "5": 
                System.out.print("Wyswietl wolne miejsca\n");
                break;
            case "6": 
                System.out.print("Wyswietl zarezerwowane miejsca\n");
                break;
            }
            wybor = odczyt.nextLine();
        }
}
 import java.util.Scanner;

class Miejsce {
    public
        String  imie, 
                nazwisko;
        int     numer;
        Boolean rezerwacja;

        Miejsce(){  //Konstruktor domyślny
            imie ="";
            nazwisko ="";
            numer = 0;
            rezerwacja = false;
        }

        Miejsce(String _imie, String _nazwisko, int _numer, Boolean _rezerwacja){ //Konstruktor
            imie = _imie;
            nazwisko = _nazwisko;
            numer = _numer;
            rezerwacja = _rezerwacja;
        }

        void rezerwuj(){    //Funkcja rezerwująca
            if (rezerwacja == true){
                System.out.print("Miejsce jest już zarezerwowane.\n");
            }
            else{
                Scanner odczyt = new Scanner(System.in);
                System.out.print("Podaj imię.\n");              
                imie = odczyt.nextLine();
                System.out.print("Podaj nazwisko.\n");
                nazwisko = odczyt.nextLine();

                rezerwacja = true;

                System.out.print("Miejsce "+ numer + " zostało zarezerwowane dla: " 
                        + imie + " " + nazwisko +"\n");
            }
        }

        void anuluj_rezerwacje(){   //Funkcja anulująca
            if (rezerwacja == true){
                imie = "";
                nazwisko = "";

                rezerwacja = false;
                System.out.print("Rezerwacja anulowana.\n");
            }
            else{
                System.out.print("Nie ma takiej rezerwacji.\n");
            }
        }

        void wypisz(){  //Funkcja wypisująca
            if (rezerwacja ==  true){
                System.out.print("Numer: " + numer + ", " + imie + " " + nazwisko + "\n");
            }
            else{
                System.out.print("Numer: " + numer + " - miejsce wolne\n");
            }
        }
};

class Sala {
    private 
        final int ilosc_miejsc = 30;
        Miejsce[] wszystkie_miejsca = new Miejsce[ilosc_miejsc];

    public
        Sala(){

        for(int i = 0; i < ilosc_miejsc; i++){
            wszystkie_miejsca[i] = new Miejsce("","",i+1, false);
            }
        }

        void wyswietl_wszystkie_miejsca(){
            for(int i = 0; i < ilosc_miejsc; i++){
                wszystkie_miejsca[i].wypisz();
            }
            System.out.print("Wszystkich miejsc :" + ilosc_miejsc + "\n");
        }
}

class Kino {
    private
        final int ilosc_sal = 5;
        Sala[] wszystkie_sale = new Sala[ilosc_sal];

    public
        Kino(){
            for( int i = 0; i > ilosc_sal; i++){
                wszystkie_sale[i] = new Sala();
            }
        }
}

Problem jest taki, że gdy próbuje wypisać wszystkie miejsca z wybranej sali dostaje error:

Exception in thread "main" java.lang.NullPointerException
at main.main(main.java:56)

1

No to tylko siaść i płakać! Weź łaskawie postaw breakpoint w tym miejscu gdzie leci wyjątek i odpal program pod debugerem. Następnie popatrz jakie wartości mają zmienne.

0

Po pierwsze, zaznaczaj wiersz z błędem (56), nie zmuszaj do kompilacji, uruchamiania, liczenia,...
Po drugie, w tym wierszu

 for( int i = 0; i > ilosc_sal; i++){

jest błąd powodujący późniejszy NPE.

0

Wybaczcie, jestem obecnie chory i nie pomyślałem. Dzięki

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