Błąd NullPointerException (funkcję)

0

Witam,
Otóż mam taki kod :

// w klasie mam 3 funkcję

public static void dzielenie(Stos stos, Stos stos1, Stos stos2){
// tutaj mam stos i dziele go na dwa stosy(stos1 i stos2)
}

public static void dodawanie(Stos stos1, Stos stos2, Stos stos){
// łącze dwa stosy (stos1 i stos2) powstaje stos
}

public static Stos glowna(Stos stos){
Stos stos1 = new Stos();
Stos stos2 = new Stos()

return // i tu nie wiem co mam dać? ..
}

Moja głowna funkcja ma korzystać z tych dwóch typu void.
Czyli mam mieć : podziel(stos,stos1,stos2);
dodawanie(stos1,stos2,stos)?
Tylko co ona ma mieć w return? Bo gdy dam stos, to mam błąd: NullPointerException..
Za wskazówki będę wdzięczna.

0

Po pierwsze, przerób definicje klasy tak by metody nie były static.
Po drugie, dodaj w klasie pola stos1 i stos2 i trochę zmień metodę glowna.

public static void /*Stos*/ glowna(Stos stos){
    stos1 = new Stos();
    stos2 = new Stos()
 
return // i tu nie wiem co mam dać? ..

Jeżeli w metodzie glowna nic więcej się nie dzieje, to nie rozumiem po co przekazujesz do niej jakiś parametr.

0

Metoda główna tak wygląda :


public static Stos glowna(Stos stos) {
        Stos stos1 = new Stos();
        Stos stos2 = new Stos();
        boolean praca = true;
        while (praca) {
            dzielenie(stos, stos1, stos2);
            if (stos.jestPusta() || stos1.jestPusta() || stos2.jestPusta()) {
                praca = false;

            }
            dodawanie(stos, stos1, stos2);
        }
        
        return // i co tu mam zwrócić?
    }

I teraz przez tą metodę główną chcę zwrócić stos, który powstał po skorzystaniu z tych dwóch metod.. Bo chcę to potem wyświetlić przez System.out w main. I nie wiem co mam dać do return aby wyświetliło się to co trzeba..

0

Jedynym kandydatem jest stos. Jeżeli masz NullPointerException, to znaczy, że do funkcji glowna przekazujesz null albo raczej "gdzieś po drodze" robisz z tej zmiennej null.

0

w podziel mam, warunek w while że pętla wykonuję się do momentu aż stos będzie pusty, aczkolwiek potem w dodawanie mam, że do stos dopisuję elementy ze stos1, stos2 więc potem nie może być pusty .. pokazuje mi, że błąd mam w :


int i = (Integer) stos.odczytajPierwszy();
stos.usunPierwszy();
int j = (Integer) stos.odczytajPierwszy() // w tej linijce pokazuje mi że mam coś nie tak. Ale tutaj mam tylko tyle, że odczytuje pierwszą wartość przypisuje ją do zmiennej, usuwa ją aby odczytać kolejną wartość z tego stosu. I tak się dzieje do momentu aż ten stos będzie pusty.
0

int j = (Integer) stos.odczytajPierwszy() // w tej linijce pokazuje mi że mam coś nie tak.

Ale konkretnie, co jest nie tak.

0

Mam coś takiego:

Exception in thread "main" java.lang.NullPointerException
	at Struktury.Stos.odczytajPierwszy(Stos.java:26)
	at Struktury.StosTest.dzielenie(StosTest.java:26)
	at Struktury.StosTest.mergeSort(StosTest.java:90)
	at Struktury.StosTest.main(StosTest.java:147)
Java Result: 1

i tak po tym wnioskuję, że właśnie coś tam muszę mięć nie tak, ale już nie wiem co.

0

Mam dla Ciebie złą wiadomość, ja też nie wiem co jest źle w kodzie, którego nie zamieściłaś więc Ci nie pomogę.

0

jakbys podał pełny kod, rozwiazanie pewnie bedziesz miał w 2 minuty. a bez kodu mozna powiedziec ze:

w klasie Stos w metodzie odczytajPierwszy w linii 26 wykonujesz najprawdopodobniej metode na obiekcie który jest ==null. :)

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