[JAVA] java.lang.NullPointerException, ale jaka przyczyna


(Kornicameister) #1
package pascaltriangle;


import javax.swing.JOptionPane;


public class Main {


    public static void main(String[] args) {

        JOptionPane.showMessageDialog(null, "Program do liczenia trojkata Pascala");

        int amountOfVerses=Integer.parseInt(JOptionPane.showInputDialog("Podaj ile chcesz wyswietlic wierszy trojkata PASCALA"));

        triangle trojkat=new triangle(amountOfVerses); //creating the triangle, with appropriate amount of verses

    }


}

package pascaltriangle;


public class triangle {


    public triangle(int _versesAmount)

    {

        this.versesAmount=_versesAmount; //assigning amount of verses user would like to print out

        verse=new verseClass[versesAmount]; //creating appropriate amount of objects of class verse, i.e right amount of verses

        for(int i=0;i
            verse[i].createVersesWithSize(i+1);

    }

// class verseClass which is responsible for being a ONE verse of pascal triangle

    public class verseClass

    {

        public void createVersesWithSize(int _verseSize)

        {

            elements=new int[_verseSize];

            //each verse has some elements, i.e the first verse, will have one element, second one will have 2

        }

        private int elements[];

    }

    private int versesAmount;

    private verseClass verse[];

}

chciałem wykorzystać nową zdobytą wiedzę o zagnieżdżonych klasach w JAVIE(nauczyć się tego), ale napotkałem pewien problem a wynika on z tego, że jak tutaj

verse[i].createVersesWithSize(i+1);

chcę utworzyć dla każdego wersu, odpowiednią ilość elementów problem leży pewnie w tym, że klasa verseClass ma w sobie tablicę elements, która w momencie gdy tworzę odpowiednią ilość wersów tutaj

verse=new verseClass[versesAmount

nie jest tworzona i potem nie jest widoczna, kiedy chcę zdefiniować ile dany wiersz ma mieć elementów (ale to jest tylko na chyba) jeśli moje przypuszczenia są prawidłowe, to jak się dobrać do tego -- Dodane Pt maja 21, 2010 2:28 pm --

verse[i]=new verseClass();

brakowało tego, ale trochę to dziwne, czy po utworzeniu tablicy obiektów, ta linijka nie powinna być zbędna ?


([alex]) #2

można też zrobić tak:

for(int i=0;i

o ile zamienisz:

public void createVersesWithSize(int _verseSize)

na:

public verseClass(int _verseSize)