błąd java.lang.NullPointerException

0

Witam, zaczynam dopiero moją przygodę z javą i chciałem napisać prosty program do rezerwacji miejsc w samolocie. Użytkownik może zapytać o miejsce i otrzyma odpowiedź czy miejsce jest wolne czy zajęte. Podczas kompilacji programu dostaję taki błąd:
Exception in thread "main" java.lang.NullPointerException
at Plane.add(first.java:59)
at first.main(first.java:70)
nie wiem co może być jego przyczyną
zamieszczam kod:


import java.nio.file.Paths;
import java.util.*;

class Passenger 
{
	private String name;
	private String sname;
	public Passenger()
	{
		name="none";
		sname="none";
	}
	public String takeData()
	{
		return name+" " + sname;
	}
	public int checkData()
	{	
		if(name.equals("none") || sname.equals("none"))
		{
			return 1;
		}
		return 0;
	}
	public void giveName(String n)
	{
		if(checkData()==1);
		{
			name = n;
		}
	}
	public void giveSname(String sn)
	{
		if(checkData()==1);
		{
			sname = sn;
		}
	}
}


class Plane
{
	private String name;
	private int time;
	private int delay;
	private Passenger place[];
	
	
	public Plane( String n,int d, int dl, int p)
	{
		name = n;
		delay = dl;
		time = d;
		place = new Passenger[p+1];
	}
	public void add( int p,String n,String sn)
	{
		place[p].giveName(n);
		place[p].giveSname(sn);
	}
}

public class first
{
	public static void main (String[] args)
	{
		Plane plane1 = new Plane("samolot",13,0,100);
		
		plane1.add(2,"jan","nowak");
		plane1.add(2,"jan","nowak");
	}
		


}

 
2
  1. Tworzysz tablicę obiektów typu Passenger, lecz nie tworzysz nigdzie samej instancji tego obiektu.
  2. Nazywaj parametry sensowniej: co Ci mówi nazwa dl albo p? id/index/counter i każdy wie o co chodzi.
1

Nigdzie nie tworzysz elementów tablicy place.

    public Plane( String n,int d, int dl, int p)
    {
        name = n;
        delay = dl;
        time = d;
        place = new Passenger[p+1]; //dlaczego tak, a nie new Passenger[p]?
        for(int i=0;i<place.length;i++)
        {
             place[i] = new Passenger();
        }
    }
0

faktycznie dzięki za pomoc :)

PS rozmiar tablicy do p+1 ponieważ chciałem żeby miejsca zaczynały się od 1 do 100 włącznie żeby nie kombinować z transformacją indeksów na miejsca w samolocie

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.