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

2015/11/24

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

Woollen Woollen

2015/11/24

#
It compiles with no syntax errors but I get this error in the terminal when I run my program: java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper.shot(Jumper.java:45) at Jumper.act(Jumper.java:28) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:42) at Jumper2.act(Jumper2.java:25) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:42) at Jumper2.act(Jumper2.java:25) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:42) at Jumper2.act(Jumper2.java:25) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:42) at Jumper2.act(Jumper2.java:25) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:41) at Jumper2.act(Jumper2.java:24) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:41) at Jumper2.act(Jumper2.java:24) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:41) at Jumper2.act(Jumper2.java:24) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:41) at Jumper2.act(Jumper2.java:24) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:41) at Jumper2.act(Jumper2.java:24) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(ArrayList.java:635) at java.util.ArrayList.get(ArrayList.java:411) at Jumper2.shot(Jumper2.java:41) at Jumper2.act(Jumper2.java:24) at greenfoot.core.Simulation.actActor(Simulation.java:594) at greenfoot.core.Simulation.runOneLoop(Simulation.java:552) at greenfoot.core.Simulation.runContent(Simulation.java:215) at greenfoot.core.Simulation.run(Simulation.java:205) Actors Jumper and Jumper 2 are identical except for controls, different images, etc. Here is the code for Jumper2:
import greenfoot.*;

public class Jumper2 extends Actor
{
    int vSpeed = 0;
    int speed = 5;
    int accel = 1;
    int walk = 0;
    int backwalk = 0;
    int stand = 0;
    boolean touchingEnemy = false;
    public int aim = 0;
    int firing = 0;
    int reload = 0;
    int shootTimer = 0;
    int bar = 10;
    public void act() 
    {
        controls();
        fall();
        checkFall();
        change();
        backchange();
        shot();
        if (reload == 1)
        {
            shootTimer++;
        }
        if(shootTimer == 20)
        {
            shootTimer = 0;
            reload = 0;
        }
        if (onGround())
        {
            setLocation(getX(), getY() -1);
        }
    }
    public void shot()
    {
        qHealth qhealth = (qHealth) getWorld().getObjects(qHealth.class).get(0);
        if (isTouching(Bullet.class))
        {
            bar--;
        }
        if (isTouching(BackBullet.class))
        {
            bar--;
        }
        if (bar == 9)
        {
            qhealth.setImage("-1health.png");
        }
        if (bar == 8)
        {
            qhealth.setImage("-2health.png");
        }
        if (bar == 7)
        {
            qhealth.setImage("-3health.png");
        }
        if (bar == 6)
        {
            qhealth.setImage("-4health.png");
        }
        if (bar == 5)
        {
            qhealth.setImage("-5health.png");
        }
        if (bar == 4)
        {
            qhealth.setImage("-6health.png");
        }
        if (bar == 3)
        {
            qhealth.setImage("-7health.png");
        }
        if (bar == 2)
        {
            qhealth.setImage("-8health.png");
        }
        if (bar == 1)
        {
            qhealth.setImage("-9health.png");
        }		
    }
    public void controls()
    {
        if(Greenfoot.isKeyDown("right") && firing == 0)
        {
            setLocation ( getX() + speed, getY() );
            walk++;
            stand = 0;
            aim = 0;
        }

        else if(Greenfoot.isKeyDown("left") && firing == 0)
        {
            setLocation ( getX() - speed, getY() );   
            backwalk++;
            stand = 1;
            aim = 1;
        }
        else{
            if(stand == 0)
            {
                setImage("qstand.png");
            }
            else if (stand == 1)
            {
                setImage("qbackstand.png");
            }
        }  
        if(Greenfoot.isKeyDown("m") && aim == 0)
        {
            setImage("qgun.png");
            if(Greenfoot.isKeyDown("m") && aim == 0 && reload == 0){
                firing = 1;
                reload = 1;
                shoot();
            }
        }
        else if (Greenfoot.isKeyDown("m") && aim == 1)
        {
            setImage("qbackgun.png");
            if(Greenfoot.isKeyDown("m") && aim == 1 && reload == 0){
                firing = 1;
                reload = 1;
                backshoot();
            }
        }
        else 
        {
            firing = 0;
        }
        if (Greenfoot.isKeyDown("up")&& onGround())
        {
            jump();
        }
    }

    public void shoot()
    {
        qBullet qbullet = new qBullet();
        getWorld().addObject(qbullet, getX() , getY());
        qbullet.setRotation(getRotation());
        qbullet.move(40.0);
        Greenfoot.playSound("gun.mp3");
    }
    public void backshoot()
    {
        qBackBullet qbackbullet = new qBackBullet();
        getWorld().addObject(qbackbullet, getX() , getY());
        qbackbullet.setRotation(getRotation());
        qbackbullet.move(-40.0);
        Greenfoot.playSound("gun.mp3");
    }

    public void fall()
    {
        setLocation ( getX() , getY() + vSpeed );
        vSpeed = vSpeed + accel;
    }

    public boolean onGround()
    {
        Actor under = getOneObjectAtOffset (0, getImage().getHeight()/2, Ground.class);
        return under != null;
    }
   
    public void checkFall()
    {
        if (onGround())
        {
            vSpeed = 0;
        }
        else
        {
            fall();
        }
    }

    public void jump()
    {
        vSpeed = -20;
        fall();
    }

    public void change()
    {
        if(walk == 5)
        {
            setImage("qwalk1.png");
        }
        if(walk == 10)
        {
            setImage("qwalk2.png");
        }
        if(walk == 15)
        {
            setImage("qwalk3.png");
        }
        if(walk == 20)
        {
            setImage("qwalk4.png");
        }
        if(walk == 25)
        {
            setImage("qwalk5.png");
        }
        if(walk == 30)
        {
            setImage("qwalk6.png");
        }
        if(walk == 35)
        {
            setImage("qwalk7.png");
            walk = 0;
        }
    }

    public void backchange()
    {
        if(backwalk == 5)
        {
            setImage("qbackwalk1.png");
        }
        if(backwalk == 10)
        {
            setImage("qbackwalk2.png");
        }
        if(backwalk == 15)
        {
            setImage("qbackwalk3.png");
        }
        if(backwalk == 20)
        {
            setImage("qbackwalk4.png");
        }
        if(backwalk == 25)
        {
            setImage("qbackwalk5.png");
        }
        if(backwalk == 30)
        {
            setImage("qbackwalk6.png");
        }
        if(backwalk == 35)
        {
            setImage("qbackwalk7.png");
            backwalk = 0;
        }
    }
}
davmac davmac

2015/11/24

#
Look at the stack trace:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
    at java.util.ArrayList.rangeCheck(ArrayList.java:635)
    at java.util.ArrayList.get(ArrayList.java:411)
    at Jumper.shot(Jumper.java:45)   <======== here!!
    at Jumper.act(Jumper.java:28)
    at greenfoot.core.Simulation.actActor(Simulation.java:594)
The first line shown that's in your code is in the Jumper class, line 45. However, the code you've posted doesn't do anything on line 45. Either you changed the code since you copied the stack trace, or you didn't post the entire code. Which line corresponds to line 45? (You can turn on line number display in the editor via the preferences).
danpost danpost

2015/11/24

#
Apparently, a Jumper2 object is in the world while no qHealth object is present in the world.
davmac davmac

2015/11/24

#
The stack trace shows an error in the Jumper class. I see now that you've posted code for a Jumper2 class. That could be why the line numbers don't match up.
You need to login to post a reply.