2010-12-15 61 views
0
object = new Object(int something); 
for(int i=0;i<5;i++) { 
    //obj=queue.element(); 
    obj=queue.remove(); 
    object=obj.runTasks(int somethingElse); 
    queue.offer(obj); 
    //queue.remove(); 
} 

Je suis fondamentalement d'essayer d'utiliser les méthodes de l'objet premier dans la file d'attente, puis le mettre à l'arrière de la file d'attente, et d'utiliser l'objet suivant, et mettre que l'un dernier dans la file d'attente, etc.en utilisant des méthodes dans les objets dans une file d'attente, Java

la ligne object=obj.runTasks(int...) fait que le programme de mettre fin, avec beaucoup d'avertissements,

par exemple « Exception dans le thread « AWT-EventQueue-0 » également.

 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
    at projekt.Modell.körSaker(Modell.java:110) 
    at projekt.Controller$CloseListener.actionPerformed(Controller.java:84) 
    at javax.swing.AbstractButton.fireActionPerformed(Unknown 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.mouseReleased(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(Unknown Source) 
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown 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.dispatchEvent(Unknown Source) 
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source) 
    at java.awt.EventDispatchThread.run(Unknown Source) 

Est-ce que quelqu'un a une solution? Merci!

+1

le code que vous avez collé ne compile même pas. Qu'est-ce que 'Object'. Ce qui est sur la ligne 84 de Controller.java. – Bozho

+0

Évidemment, je n'ai pas ajouté le code entier. La ligne 84 de Controller.java appelle la méthode qui contient le code ci-dessus. Modell.java:110 est object = obj.runTasks (int quelque choseElse). Je pensais juste que je le rendrais plus facile à lire que s'il contenait mes variables. – Rickard

Répondre

0

Je l'ai finalement résolu. Je remplissais la file d'attente avec des objets nuls et des objets non nuls, ce qui rendait la tâche plus difficile à réaliser.

1

Les assertions peuvent aider à déboguer ce type de problème. Si vous vous attendez à tous les éléments de la file d'attente pour être null, pensez à utiliser le code comme ceci:

obj=queue.remove(); 
assert(obj != null); 
object=obj.runTasks(int somethingElse); 

Si vous tirez un objet nul de la file d'attente, ce qui est inattendu, le programme va mourir sur la assert. La cause du problème est souvent beaucoup plus claire, lorsque les assertions sont en place.

Vous devrez exécuter -ea pour activer les assertions. Voir http://download.oracle.com/javase/6/docs/technotes/tools/windows/java.html