nullpointerexception

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • 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);


    }
  • es ist so:
    Im Konstruktor schreibst du:

    Quellcode

    1. Random zuf1 = new Random();
    2. 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:

    Quellcode

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

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

    Quellcode

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


    Bei den anderen Variablen machst dus ja richtig ;)