# Java: 2-D array multiplication table problems

• 01-07-2005, 12:00 AM
finittz
Java: 2-D array multiplication table problems
hi, im a fairly new java programmer...

i want to make a multiplication table where the user can choose how many rows and columns the table has, i get a "java.lang.ArrayIndexOutOfBoundsException: 5
at Review.main(Review.java:26)" error...i dont get that, anyone got any ideas? anywayz heres my code take a look....

// The "Review" class.
import java.awt.*;
import hsa.Console;

public class Review
{
static Console c; // The output console

public static void main (String[] args)
{
c = new Console ();

int a, b;
c.print ("a/row:");
c.print ("b/col:");

int table[] [] = new int [a] [b]; // max for table

for (int row = 1 ; row <= a ; row++) //length of rows
{
for (int col = 1 ; col <= b ; col++) //length of columns
{
table [row] [col] = row * col;
c.print (table [row] [col] + " ");

}
c.println ();
}

} // main method
} // Review class
• 01-07-2005, 12:12 AM
cfc
Quote:

Originally Posted by finittz
int table[] [] = new int [a] [b]; // max for table

for (int row = 1 ; row <= a ; row++) //length of rows
{
for (int col = 1 ; col <= b ; col++) //length of columns
{

ArrayIndexOutOfBoundsException indicates that the array index (the number representing the element you're trying to interact with) is outside of the element indices in the array.

From a quick inspection, you should be using the less than operator rather than the less than or equal to operator in your for statements. The reason for this is that array indices start at zero while the variables a and b specify the number of elements in the array and hence will be one larger than the highest array index.
• 01-07-2005, 01:59 AM
finittz
ok now that i've gotten that solved heres my renewed program...except now the problem is with alignment of the numbers...i need them to be centerly aligned, any ideas?

// The "Review" class.
import java.awt.*;
import hsa.Console;

public class Review
{
static Console c; // The output console

public static void main (String[] args)
{
c = new Console ();

int a, b;
c.print ("a/row:");
c.print ("b/col:");

a++;
b++;
int table[] [] = new int [a] [b]; // max for table

for (int row = 1 ; row < a ; row++) //length of rows
{
for (int col = 1 ; col < b ; col++) //length of columns
{
table [row] [col] = row * col;
c.print (table [row] [col] + " ");

}
c.println ();
}

} // main method
} // Review class