# Sparse Matrix - need help. Array index of out bounds: 1

• 01-23-2012, 07:23 PM
xelub
Sparse Matrix - need help. Array index of out bounds: 1
hi there. first time here. im getting an array index out of bounds on my code. keep checking and simulating it but there no error on my simulating. when i run it, it gives an error arrays out of bounds: 1
any help??
this is my code.
Code:

import java.util.Scanner;
public class Sparse {
int num = 0;
public void Count_Nonzero(int Arr1[][],int m, int n)
{
int Row = 0;
while(Row<m)
{
int Col= 0;
while(Col<n)
{
if (Arr1[Row][Col] != 0)
{
num++;
}
Col++;
}
Row++;
}

}

public static void main(String[] args) {
Sparse Keyboard = new Sparse();
Scanner scan= new Scanner(System.in);
System.out.println("Input rows");
int m=scan.nextInt();
System.out.println("Input Column");
int n=scan.nextInt();
int arr1[][] = new int [m][n];
for(int i=0; i<m;i++){
for(int j=0;j<n;j++){
System.out.println("Enter Element ["+i+"]["+j+"]");
arr1[i][j]=scan.nextInt();

}
}
Keyboard.sparse(arr1,m,n);

}

public void sparse(int Arr1[][],int m, int n)
{

int ArrNew[][] = new int [num+1][3];
ArrNew[0][0]= m;
ArrNew[0][1]= n;
ArrNew[0][2]= num;
int Row = 0;
int I=1;
while (Row<m)
{
int Col=0;
while(Col<n)
{
if(Arr1[Row][Col] != 0)
{
ArrNew[I][0] = Row;
ArrNew[I][1] =Col;
ArrNew[I][2] = Arr1[Row][Col];
I++;
}
Col++;
}
Row++;
}
for(int i=0; i<m;i++){
for(int j=0;j<n;j++){
System.out.print("|"+ArrNew[i][j]+"| ");
}
System.out.println();
}
}

}

• 01-23-2012, 07:27 PM
Tolls
Re: Sparse Matrix - need help. Array index of out bounds: 1
Please use code tags when posting code.
What is the full exception you are getting, and from what line of code?
• 01-23-2012, 07:37 PM
xelub
Re: Sparse Matrix - need help. Array index of out bounds: 1
sorry. how can you use code tags? newbie here.
the line : Keyboard.sparse(arr1,m,n);
and line : ArrNew[I][0] = Row;
are the problems. getting exception.
• 01-23-2012, 08:12 PM
JosAH
Re: Sparse Matrix - need help. Array index of out bounds: 1
I fixed the tags for you. b.t.w. those Exceptions also mention the line number where the Exception was thrown.

kind regards,

Jos
• 01-23-2012, 09:00 PM
Mr.Java
Re: Sparse Matrix - need help. Array index of out bounds: 1
Make follwing change to remove runtime Error

int ArrNew[][] = new int [m*n][3];
//int ArrNew[][] = new int [num+1][3];
Also make some change to output code block
for(int i=0; i<m;i++){
for(int j=0;j<n;j++){
System.out.print("|"+ArrNew[i][j]+"| ");
}
System.out.println();
}
coz ArrNew[][] now have more colum
and more rows.......
• 01-23-2012, 09:30 PM
JosAH
Re: Sparse Matrix - need help. Array index of out bounds: 1
Quote:

Originally Posted by Mr.Java
Make follwing change to remove runtime Error

int ArrNew[][] = new int [m*n][3];

That way you get a 'sparse' array that takes more memory than a dense array; bad idea.

kind regards,

Jos