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