You are not logged in.

  • Login

1

Sunday, February 7th 2010, 5:12pm

nullpointerexception

Ich muss für die schule eine klasse schwarm programmeieren ,deren tiere sich zufällig über den bildschirm bewegt ohne aneinender anzustoßen. Um die zufällige Bewegungsrichtung zu bestimmen habe ich die klasse random verwendet, allerdings funtioniert diese nicht richtig immer wenn ich die methode zum zufälligen bewegen über den bildschirm aufrufe kommt die fehlermeldung nullpointer exception.
kann mir jemand weiterhelfen?
danke im voraus!




quellcode :


import java.util.Random;
/**
* Beschreiben Sie hier die Klasse Schwarm.
*
* @author
* @version 1.0
*/
public class Schwarm
{
private schokohörnchen tier1;
private schokohörnchen tier2;
private schokohörnchen tier3;
private schokohörnchen tier4;
private boolean freieBahn;
private Random zuf2;
private Random zuf1;

/**
* Konstruktor für Objekte der Klasse Schwarm
*
*/

public Schwarm(){

tier1 = new schokohörnchen();
tier2 = new schokohörnchen();
tier3 = new schokohörnchen();
tier4 = new schokohörnchen();

Random zuf1 = new Random();
Random zuf2 = new Random();

tier1.Verkleinere(4);
tier1.horizontalVerschieben(150);

tier2.Verkleinere(4);
tier2.horizontalVerschieben(-150);

tier3.Verkleinere(4);
tier3.vertikalVerschieben(150);

tier4.Verkleinere(4);
tier4.vertikalVerschieben(-150);




}

private boolean freieBahn(){
//hier würde die methode freie bahn kommen


}


}



public void schwaermen(int Entfernung){


for(int i=0;i<Entfernung;i++){


int zufall2=(zuf2.nextInt(7)+1);
switch (zufall2){

case 1 :

freieBahn();
if(freieBahn=true){



tier1.horizontalVerschieben(-1);


};



break;
case 2 :

freieBahn();

if(freieBahn=true){

tier1.schräguntenBewegen(-1);


}

2

Sunday, February 7th 2010, 6:18pm

steckst du mal biete deinen formatierten Code in den Code-Tag?
und gelb ist nicht gerade die beste farbe ;)

3

Sunday, February 7th 2010, 6:36pm

es ist so:
Im Konstruktor schreibst du:

Java Quellcode

1
2
Random zuf1 = new Random();
Random zuf2 = new Random();

damit erzeugst du 2 lokale Objekte. Diese sind nur innerhalb des Konstruktors verwendbar und werden mit dessen beenden ungültig. Wenn du die Random-Objekte den Objekt-Attributen zuweisen willst musst du einfach das Random vorne weglassen:

Java Quellcode

1
2
zuf1 = new Random();
zuf2 = new Random();

oder um es deutlicher zu machen um welche Variablen es sich handelt auch:

Java Quellcode

1
2
this.zuf1 = new Random();
this.zuf2 = new Random();


Bei den anderen Variablen machst dus ja richtig ;)

4

Sunday, February 7th 2010, 6:48pm

danke jetzt funktionierts ! :)

Similar threads

Social bookmarks