Witam, nie mogę dodać obiektu klasy (który przechowuje w tablicy) do stosu. Z błędu wynikało by, że dany element tablicy (punkty[0]...punkty[n]) jest pusty. Deklaracja stosu jako "Stack<Punkt> stos" nie rozwiązuje w żaden sposób sprawy. Może popełniłam błąd z deklaracją samej tablicy...już sama nie wiem.
Exception in thread "main"
java.lang.NullPointerException
at Otoczka.znajdzOtoczke(Otoczka.java:100)
at Otoczka.main(Otoczka.java:156)
import java.util.Scanner;
import java.util.Stack;
public class Otoczka extends Punkt
{
private static int ilosc_punktow;
private static Scanner skaner;
private static Punkt[] punkty;
private static Stack stos; //"Stack<Punkt> stos" niczego nie poprawia
private static Punkt przed_ostatni, ostatni;
public Punkt znajdz_minimum()
{
....
}
public void transpozycja(Punkt tmp)
{
...
}
public float policzKaty(Punkt tmp)
{
...
}
public void ustawKaty()
{
...
}
public void sortujPunkty()
{
....
}
public int okresl_kierunek_skretu(Punkt p1, Punkt p2, Punkt p3)
{
}
public void znajdzOtoczke()
{
Punkt tmp = new Punkt();
//tmp = punkty[0]; //TU O DZIWO NIE MA PROBLEMU
//System.out.println(tmp);
stos.push(punkty[0]); // TUTAJ JEST PROBLEM!
ostatni = punkty[0];
stos.push(punkty[1]);
przed_ostatni = punkty[1];
stos.push(punkty[2]);
for (int i = 3; i < ilosc_punktow; i++)
{
while (okresl_kierunek_skretu(ostatni, przed_ostatni, punkty[i]) <= 0)
{
...
}
...
}
}
public static void main(String[] args)
{
// pobranie ilosci punktow
skaner = new Scanner(System.in);
System.out.println("Podaj ilosc punktow: ");
ilosc_punktow = skaner.nextInt();
punkty = new Punkt[ilosc_punktow];
for (int i = 0; i < punkty.length; i++)
{
System.out.println("Podaj " + (i + 1) + " wspolrzedna: ");
int x = skaner.nextInt();
int y = skaner.nextInt();
punkty[i] = new Punkt(x, y, 0);
}
Otoczka otoczka = new Otoczka();
Punkt tmp = new Punkt();
// wyszukanie punktu oddalonego najbardziej na lewo i w dół
tmp = otoczka.znajdz_minimum();
otoczka.transpozycja(tmp);
otoczka.ustawKaty();
otoczka.sortujPunkty();
for (int i = 0; i < punkty.length; i++)
{
System.out.println(i);
System.out.println(punkty[i]);
}
otoczka.znajdzOtoczke(); // BŁĄD
}
}