Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Ogni tanto mi dà un errore...

    ciao a tutti!!
    per un programma ho bisogno di creare un numero casuale da 0 a 26.
    a ogni numero corrisponde una chiave per un' hashtable e a ogni chiave corrisponde un checkbox.

    Io voglio dire al programma di generare un numero casuale e di controllare se il checkbox a cui corrisponde è già spuntato:
    se è spuntato il programma dovrà generarne un'altro e ricontrollare;
    se non è spuntato il programma dovrà spuntarlo...


    io per ora ho scritto così:
    codice:
    do{         estratto = rand.nextInt(26);
                    
                    } while ( ((JCheckBox)hashtable.get(estratto)).isSelected()  == true );
    dove estratto è una variabile di tipo Int, rand è il random e hashtable é l' Hashtable.



    eseguendo il programma le prime volte che premo il pulsante (che entra quindi nel do) va tutto bene e spunta i checkbox giusti, poi inizia a darmi questo problema: (la riga 308 è quella dove è scritto "while")

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at numeri_casuai.Numeri_casuali$2.actionPerformed(Num eri_casuali.java:308)
    at javax.swing.AbstractButton.fireActionPerformed(Unk nown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed (Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
    at javax.swing.plaf.basic.BasicButtonListener.mouseRe leased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent( Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(U nknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unkno wn Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.awt.EventQueue$4.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPri vilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilter s(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(U nknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarch y(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)



    credo che venga quando il checkbox è già spuntato, ma non saprei....
    qualcuno mi potrebbe dire perchè mi viene per favoree??

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Da documentazione, il metodo get() di Hashtable "Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key."

    Ora... tu sei sicuro che hashtable contenga 26 JCheckBox, con chiavi da 0 a 25?

    Ti consiglio comunque di lasciar perdere Hashtable e di usare HashMap (se proprio ti serve per forza una mappa: per quel che devi fare io userei un ArrayList...)
    Ultima modifica di Alex'87; 23-06-2014 a 12:35
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    potrei aver fatto un errore della madonna mettendo i 26 checkbox con chiavi da 1 a 26?

  4. #4
    ok si ho controllato!!
    avevo fatto
    codice:
    hashtable.put(1, chckbxaaa);
    hashtable.put(2, chckbxbbb);
    hashtable.put(3, chckbxccc);
    hashtable.put(4, chckbxddd);
    ...
    hashtable.put(26, chckbxeee);
    senza mettere così lo 0 e mettendo invece 26 che non serviva a nulla!!
    grazie mille

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    rand.nextInt(26) ti restituisce un numero tra 0 (incluso) e 26 (escluso)

    Se dovesse generarti 0 cosa pensi che succeda? Esatto, NullPointerException

    Comunque: per quale motivo utilizzi una hashtable?
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Non me lo chiedere, non sapevo come fare e mio padre mi ha consigliato così...

  7. #7
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Puoi sempre cambiare componente eh...

    Stai usando una hashtable per memorizzare 26 oggetti a cui accedi per indice... Guarda un po', è esattamente ciò a cui serve un ArrayList
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    Puoi sempre cambiare componente eh...

    Stai usando una hashtable per memorizzare 26 oggetti a cui accedi per indice... Guarda un po', è esattamente ciò a cui serve un ArrayList
    se la guardi così tieni conto che alla fine della fiera per una lista di 26 oggetti a cui accedi tramite indice puoi fermarti ad un banale array (poi dipende tutto da come lo usi).
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.