Witam,
piszę stacje benzynową na zajęcie. Program ma polegać na tym, że samochody jeżdżą i jak kończy im się paliwo to mają zajechać na stację benzynową w celu zatankowania. Maja sprawdzić który dystrybutor jest wolny a jak nie ma żadnego wolnego to mają ustawić się w najkrótszej kolejce. Wymyśliłem to tak, że tworze 3 ArrayListy i szukam która ma najmniejszy rozmiar i do tej która ma najmniejszy rozmiar dodaje samochód, ale coś mi nie działa. Wywala java.lang.NullPointerException. W komentarzach napisałem które linijki sprawiają kłopoty. Moglibyście spojrzeć i coś doradzić. Za wszelkie wskazówki bardzo dziękuje.
import java.util.ArrayList;
public class CPN {
public int ilosc_dystrybutorow;
public boolean [] dysrtybutor;
Samochod auto;
public ArrayList<Integer> [] lista;
public CPN (int ilosc_dystrybutorow)
{
this.ilosc_dystrybutorow=ilosc_dystrybutorow;
this.lista= new ArrayList [this.ilosc_dystrybutorow]; //NIE WIEM CZY TA JEST DOBRZE
this.dysrtybutor = new boolean [ilosc_dystrybutorow];
for(int i=0; i<this.dysrtybutor.length;i++)
{
this.dysrtybutor[i]=true;
}
}
public synchronized boolean dostepnosc_dystrybutora (int nr_pojazdu)
{
int najkrotsza =0;
for(int i=0;i<dysrtybutor.length;i++)
{
if(dysrtybutor[i]==true)
{
System.out.println("Pojazd "+nr_pojazdu+" tankuje przy dystrybutorze"+ i);
dysrtybutor[i]=false;
try {
wait(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dysrtybutor[i]=true;
lista[i].remove(lista[i].indexOf(nr_pojazdu));
System.out.println("Kolejka do dystrybutora nr "+i+" jest rowna "+kolejka_dystrybutora[i]);
return dysrtybutor[i];
}
else if (dysrtybutor[i]==false)
{
/*COŚ MU NIE PASUJE TUTAJ*/ najkrotsza = dlugosc_kolejki();
lista[najkrotsza].add(nr_pojazdu);
System.out.println("Kolejka do dystrybutora nr "+i+" jest rowna "+kolejka_dystrybutora[i]);
System.out.println("Dystrybutor "+i+" jest niedostepny");
}
}
return false;
}
public int dlugosc_kolejki ()
{
int i=0;
int min;
min=lista[0].size(); //COŚ MU NIE PASUJE TUTAJ
do
{
if(lista[i].size()<min) min=i;
i++;
}while(i<ilosc_dystrybutorow);
return min;
}
}