This site requires JavaScript, please enable it in your browser!
Greenfoot back
Gingervitis
Gingervitis wrote ...

2013/3/17

Null pointer exception

Gingervitis Gingervitis

2013/3/17

#
Can someone please tell me what I need to change in my code? I got this error: java.lang.NullPointerException at Turtle.ifInLevel1(Turtle.java:171) at Turtle.act(Turtle.java:20) at greenfoot.core.Simulation.actActor(Simulation.java:565) at greenfoot.core.Simulation.runOneLoop(Simulation.java:523) at greenfoot.core.Simulation.runContent(Simulation.java:213) at greenfoot.core.Simulation.run(Simulation.java:203) Here is my class
import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Turtle here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Turtle extends Animal
{
    private int timer = 100;  
    private int counter;
    private boolean isBlasterType2;
    private int debrisPickedUp;
    
    public void act()  
    {  
        ifInIntro();
        ifInMainMenu();
        ifInLevel1();
    }  

    public void ifInIntro()
    {
        World world = getWorld();

        if (world instanceof Intro)
        {
            if(timer==0)  
            {  
                move(2);  
                if(getRotation() == 0 && getX()>=355) timer = 136;  
                if(getRotation() == 180 && getX()<=202) Greenfoot.setWorld(new MainMenu());  
            }  
            else  
            {  
                timer--;  
                if(getX()>=355 && timer<36) setRotation(getRotation()-5);  
            }

            if (canSee(Turtle.class))
            {
                eat(Turtle.class);
            }
        }
    }

    public void ifInMainMenu()
    {
        World world;
        world = getWorld();

        if (world instanceof MainMenu)
        {
            counter++;
            timer = 100;
            if (counter == 1)
            {
                turnTowards(300, 0);
                counter++;
            }

            if (Greenfoot.isKeyDown("up"))
            {
                move(3);
            }

            if (Greenfoot.isKeyDown("down"))
            {
                move(-3);
            }

            if (Greenfoot.isKeyDown("left"))
            {
                turn(-5);
            }

            if (Greenfoot.isKeyDown("right"))
            {
                turn(5);
            }


            if (getX() >= 245 && getX() <= 365 && getY() <= 115)
            {
                Greenfoot.delay(75);
                Greenfoot.setWorld(new Level1());
            }
        }
    }

    public void ifInLevel1()
    {
        World world = getWorld();

        if (world instanceof Level1)
        {
            move(3);      
            if (Greenfoot.isKeyDown("left"))
            {
                turn(-5);
            }

            if (Greenfoot.isKeyDown("right"))
            {
                turn(5);
            }

            if (Greenfoot.isKeyDown("x"))
            {
                turn(25);
                shoot();
                shoot();
                shoot();  
            }

            String key=Greenfoot.getKey();  
            if (key == null) return;  
            if ("z".equals(key) ) isBlasterType2= !isBlasterType2;  
            if ("space".equals(key)) shoot();
            
            Actor arrow = getOneIntersectingObject(Arrow.class); 
            if (arrow != null )
            {
                
                world.removeObjects(world.getObjects(Rock.class));
                world.removeObjects(world.getObjects(Text.class));
                world.removeObjects(world.getObjects(Arrow.class));
                setLocation(300, 490);
                Debris debris = new Debris();
                world.addObject(debris, 83, 449);
                
                Debris debris2 = new Debris();
                world.addObject(debris2, 246, 400);
                
                Debris debris3 = new Debris();
                world.addObject(debris3, 387, 342);
                
                Debris debris4 = new Debris();
                world.addObject(debris4, 532, 387);
                
                Debris debris5 = new Debris();
                world.addObject(debris5, 408, 195);
                
                Debris debris6 = new Debris();
                world.addObject(debris6, 408, 195);
                
                Debris debris7 = new Debris();
                world.addObject(debris7, 497, 99);
                
                Debris debris8 = new Debris();
                world.addObject(debris8, 300, 99);
                
                Debris debris9 = new Debris();
                world.addObject(debris9, 135, 93);
                
                Debris debris10 = new Debris();
                world.addObject(debris10, 114, 275);
            }
            
            if(canSee(Debris.class))
            {
                eat(Debris.class);
                debrisPickedUp++;
                
            }
            if (debrisPickedUp == 10)
            {
                Arrow arrow1 = new Arrow();
                world.addObject(arrow1,300,470);
                arrow.setImage("ArrowDownB.png");
            }
        }       
    }

    public void shoot()
    {
        Actor blaster = null;  
        if (isBlasterType2)   
        {  
            blaster = new Bullet2();  
            blaster.setImage("BBPurge.png");   
        }  
        else  
        {  
            blaster = new Bullet();  
        }  
        blaster.setRotation(getRotation());  
        getWorld().addObject(blaster, getX(), getY());  
    }

    public void tryToEat()
    {
        if (canSee(Turtle.class))
        {
            eat(Turtle.class);
        }
    }

    public void createNewBullet()
    {
        Bullet b;
        b = new Bullet();

        World world;
        world = getWorld();

        world.addObject(b,getX() ,getY() );
    }

    /**
     * Method createNewCRock
     *
     */
    public void createNewCRock()
    {
        Universal cr;
        cr = new Universal();

        World world;
        world = getWorld();

        int x = getX();
        int y = getY();
        cr.setImage("CRock.png");
        world.addObject(cr,475,441);
    }
}
Gevater_Tod4711 Gevater_Tod4711

2013/3/17

#
In line 171 it says arrow.setImage(...). You probably meant arrow1.setImage(...). This line is also executed if arrow is null.
Gingervitis Gingervitis

2013/3/17

#
ohhh ok. I wonder how I missed that..... Thank You
You need to login to post a reply.