Generator liczb, słów + błąd java.lang.NullPointerException

0

Jestem początkujący i pojawił mi się problem przy tworzeniu zdarzenia po wciśnięciu przycisku. Obsługa zdarzenia:

class Wygeneruj implements ActionListener
    {
        
        public void actionPerformed(ActionEvent zdarzenie1)
            {   
                int liczbaa=((Integer)spinner.getValue());
                                
                String[] slowo = new String[liczbaa];                
                String [] liczby = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};    
                String [] litery = {"a", "b", "c", "d", "e", "f", "g", "h"};
                
                Random rand = new Random();                           
               
                if (check3.isSelected())
                {
                    for (int i = 0; i < slowo.length; ++i)
                    {
                    slowo[i] = liczby[rand.nextInt(8)]; 
                    area.setText(slowo[i]);
                    }
                }
            }
    } 

myślę że się czepia przy "area.setText" ale nie wiem jak to zmienić.

wyjątki jakie mi wywala to:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at projektprogramowanie.Projektprogramowanie$Wygeneruj.actionPerformed(Projektprogramowanie.java:176)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6504)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
	at java.awt.Component.processEvent(Component.java:6269)
	at java.awt.Container.processEvent(Container.java:2229)
	at java.awt.Component.dispatchEventImpl(Component.java:4860)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Component.dispatchEvent(Component.java:4686)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
	at java.awt.EventQueue.access$000(EventQueue.java:101)
	at java.awt.EventQueue$3.run(EventQueue.java:666)
	at java.awt.EventQueue$3.run(EventQueue.java:664)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:680)
	at java.awt.EventQueue$4.run(EventQueue.java:678)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
0

Skoro wyjątkiem jest NullPointerException to znaczy, że gdzieś odwołujesz się do nie zainicjalizowanego obiektu (lub usuniętego z pamięci). Sprawdź dokładnie czy wszystko masz "utworzone".

0

area jest null.

xeo545x39 napisał(a)

odwołujesz się do nie zainicjalizowanego obiektu (lub usuniętego z pamięci)

Do pustej referencji / niezainicjowanego piszemy razem / nie można w Javie usunąć obiektu z pamięci, lol

0

Wybacz, nie znam Javy, sugerowałem się intuicją :) Myślałem, że przy usunięciu, zostaje coś na wzór pustej referencji. Nie ważne ;p

0
Kerai napisał(a)

area jest null.

xeo545x39 napisał(a)

odwołujesz się do nie zainicjalizowanego obiektu (lub usuniętego z pamięci)

Do pustej referencji / niezainicjowanego piszemy razem / nie można w Javie usunąć obiektu z pamięci, lol

to jak mam utworzyć obiekt area tak żeby nie był nullem?

0

Ok juz zrobilem tak jak poradzil kolega wyzej i wyswietla mi teraz taki wyjątek:

Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
0

Zapewne błędnie przeprowadzasz konwersję z string na integer. Nie rzutuj, a sparsuj: Integer.parseInt(jakis_tam_string);.

0

Fajnie, że podałeś miejsce, w którym ten wyjątek wywala. Zapewne masz podpięty zły model do spinnera (nie zwraca Integerów tylko Stringi).

0

mam pewien problem a właściwie nie problem lecz pytanie. Jak mogę zrealizować to żeby mi losowało z 2 zakresów:

String [] liczby = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0"};    
String [] litery = {"a", "b", "c", "d", "e", "f", "g", "h",
                    "i", "j", "k", "l", "m", "n", "o", "p"};

losowanie z liczb mam zrealizowane tak:

 liczby[rand.nextInt(liczby.length)];

a jak napisac zeby mi losowalo z liczb i liter razem ale nie tworząc nowej tablicy

0

No zrób z tego jedną tablicę:

String [] znaki = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p"};

Bo i tak zapisałeś tablicę liczb jako znaki, a nie liczby.

0

Wpierw losuj tablicę, a potem element tablicy.

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