...

Java: 2-D array multiplication table problems

finittz
01-07-2005, 12:00 AM
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:");
a = c.readInt ();
c.print ("b/col:");
b = c.readInt ();


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

cfc
01-07-2005, 12:12 AM
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.

finittz
01-07-2005, 01:59 AM
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:");
a = c.readInt ();
c.print ("b/col:");
b = c.readInt ();

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



EZ Archive Ads Plugin for vBulletin Copyright 2006 Computer Help Forum