Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 822015
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 15, 20262026-05-15T02:44:14+00:00 2026-05-15T02:44:14+00:00

OK so I am getting an ArrayIndexOutofBoundsException. I don’t know why. Here’s my code:

  • 0

OK so I am getting an ArrayIndexOutofBoundsException. I don’t know why.

Here’s my code:

/**
Tile Generator
Programmer: Dan J.
Thanks to: g00se, pbl.
Started May 23, 2010
**/

import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;

public class tileGen extends Applet implements KeyListener  {


    Image[] tiles; // tile arrays
    Image player; // player image
    int x, y, px, py, tx, ty; // x tile - y tile // player x - player y // tile x - tile y
    boolean left, right, down, up, canMove; // is true?
    int[][] board; // row tiles for ultimate mapping experience!
    final int NUM_TILES = 33; // how many tiles are we implementing?
    Label lx, ly; // to see where we are!
    private static int BLOCKED = 28;

    int lastX, lastY, row, col;

  public void init() {

    board = loadBoard();

    tiles = new Image[NUM_TILES];
    for(int i = 0;i < NUM_TILES;i++) {
        tiles[i] = getImage(getClass().getResource(String.format("tiles/t%d.png", i)));
    }
        board[2][2] = BLOCKED;
        player = getImage(getClass().getResource("player.png")); // our player
        addKeyListener(this);
        canMove = true;
        px = 0;
        py = 0;
        lastX = 0;
        lastY= 0;
    }

    public void keyPressed(KeyEvent e) {

if (blocked(lastX,lastY) == true) {
    System.out.println("You were JUST on a BLOCKED tile!");
}

int x1 = lastX = lastX + 1;
int y1 = lastY;
       System.out.println("++++++++++++++++++++++++\n(" +x1+","+y1+") " + blocked(x1,y1) + "\n++++++++++++++++++++++++");

        if (e.getKeyCode() == KeyEvent.VK_LEFT) {
            left = true;
            px = px - 32;
            lastX = lastX - 1;
        }
        if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
            right = true;
            px = px + 32;
            lastX = lastX + 1;
        }
        if (e.getKeyCode() == KeyEvent.VK_DOWN) {
            down = true;
            py = py + 32;
            lastY = lastY + 1;
        }
        if (e.getKeyCode() == KeyEvent.VK_UP) {
            up = true;
            py = py - 32;
            lastY = lastY - 1;
        }



        repaint();
    }
public void keyReleased(KeyEvent e){} // ignore
public void keyTyped(KeyEvent e){} // ignore

  public void paint(Graphics g) {


        for (row = 0; row < board.length; row++) {
            for (col = 0; col < board[row].length; col++) {
                int index = board[row][col];
                g.drawImage(tiles[index], 32 * col, 32 * row, this);

            }
        }
        System.out.println("X: " + lastX + "\nY: " + lastY + "\n=============================\n");

System.out.println("Blocked tile?: " +blocked(lastX,lastY) + " ("+lastX + ","+lastY+")");
        g.drawImage(player, px, py, this);
    } // end paint method

     public void update(Graphics g)
     {
          paint(g);
     }

    public int[][] loadBoard() {
        int[][] board = {
                { 2,2,24,24,24,24,24,1,3,0,0,0 },
                { 2,2,24,23,23,23,24,1,3,0,0,0 },
                { 1,1,24,23,23,23,24,1,3,3,3,3 },
                { 1,1,24,24,23,24,24,1,1,1,1,1 },
                { 1,1,1,1,7,1,1,1,1,1,3,3 },
                { 5,1,1,1,7,7,7,7,7,1,3,3 },
                { 6,1,3,1,1,1,1,1,7,7,7,3 },
                { 6,1,3,1,3,1,3,1,1,1,7,3 }
            };
    return board;
    }

    public boolean blocked(int tx, int ty) {

            return board[tx][ty] == BLOCKED;
        }

} // end whole thing

The thing is when I go to the red brick at board[2][2]… I go there. Then I go up… then I TRY go to back down but that error pops up. Also when I go to the right 8 squares… I ALSO get that error.

ALSO, pretend my 2d map is split into FOUR squares… well square one is the top left… if I go ANYWHERE else … I get that error.

What am I doing wrong? Thanks.

update: i found the culprit! It’s the lastX and lastY updates when I press the key! But I still can’t figure out to fix this array out of bounds! 🙁

Here is the error:
Exception in thread "AWT-EventQueue-1" java.lang.ArrayIndexOutOfBoundsException:
8
at tileGen.blocked(tileGen.java:111)
at tileGen.paint(tileGen.java:86)
at tileGen.update(tileGen.java:92)
at sun.awt.RepaintArea.updateComponent(RepaintArea.java:239)
at sun.awt.RepaintArea.paint(RepaintArea.java:216)
at sun.awt.windows.WComponentPeer.handleEvent(WComponentPeer.java:306)
at java.awt.Component.dispatchEventImpl(Component.java:4706)
at java.awt.Container.dispatchEventImpl(Container.java:2099)
at java.awt.Component.dispatchEvent(Component.java:4460)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)

    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)

    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)</code>
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-15T02:44:15+00:00Added an answer on May 15, 2026 at 2:44 am

    Generally speaking, an ArrayIndexOutOfBoundsException is thrown when there’s an attempt to access an array element at an index that is out of bounds.

    The following snippet shows some scenarios (independent of each other) where ArrayIndexOutOfBoundsException are thrown:

        // 1
        int[] x = new int[5];
        x[-1] = 0; // ArrayIndexOutOfBoundsException: -1
    
        // 2
        int[] x = new int[5];
        x[5] = 0; // ArrayIndexOutOfBoundsException: 5
    
        // 3
        int[][] table = new int[3][3];
        table[0][10] = 0; // ArrayIndexOutOfBoundsException: 10
    
        // 4
        int[][] table = new int[3][3];
        table[-10][10] = 0; // ArrayIndexOutOfBoundsException: -10
    
        // 5
        int[][][][] whoa = new int[0][0][0][0];
        whoa[0][-1][-2][-3] = 42; // ArrayIndexOutOfBoundsException: 0
    
        // 6
        int[][][][] whoa = new int[1][2][3][4];
        whoa[0][1][2][-1] = 42; // ArrayIndexOutOfBoundsException: -1
    

    Where and how this happens in your applet is unclear, but rest assured that it happens for the right reason: you’ve illegally tried to access an array element at an invalid index, and since arrays are bound-checked at run-time in Java, the run-time exception is raised.

    You may want to bring out the debugger to see how the invalid index was evaluated, but if nothing else, lots of System.out.println wherever you’re mutating the index and wherever you’re about to access an array element can help locate the bug.


    Additional tips:

    Instead of:

    lastX = lastX + 1;
    lastY = lastY - 1;
    

    You can do:

    lastX++;
    lastY--;
    

    This is called the “post-increment” and “post-decrement” operators. Used judiciously, it can improve readability.

    References

    • JLS 15.14.2 Postfix increment operator
    • JLS 15.14.3 Postfix decrement operator
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Getting the above error in following code. How to rectify it. Thanks. Please look
Getting an error with my code found HERE ... Which is a culmination of
Getting started with jquery and having trouble getting hello world type example going for
Getting started with NHibernate How can I generate identity fields in nHibernate using Hilo
Getting started with TDD and I want to ground up a Repository-driven Model. However,
First of all, Beginner here. I'm using this code. class MDArrays { public static
Here is my code, the point of which is to write a program that
Getting Invalid Application Path error. Here are the steps I've taken. Right click on
Getting data from a database table to an object in code has always seemed
Getting started with TDD and the repository pattern, I'm wondering if it makes any

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.