stream close while 2nd object call to getMatrix() method for input data #
** I am trying to read data from keyboard using BufferedReader obj. for two matrix, using two separate object, when use 1st object work properly input but while call trough second object exception raised "STREAM CLOSED" WHY? every object call to getMatrix() method for add data to matrix and data input from keyboard in this method obtain Stream object for get data from keyboard and end of the method close the stream, again call from another object to getMatrix() method and same process but during second object call exception raised...Stream Closed...... **
package myarray;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Matrix
{
int r,c;
int arr[][];//instance optional initialization
public Matrix(int r, int c)
{
super();
this.r = r;
this.c = c;
arr=new int[r][c];
}
//Stream closed problem
protected int[][] getMatrix() throws IOException
{
try(BufferedReader br=new BufferedReader(new InputStreamReader(System.in));)
{
StringTokenizer st;
for(int i=0; i<arr.length; i++)
{
System.out.println("Enter "+arr[i].length+" Integer separated with space");
String s=br.readLine();
st=new StringTokenizer(s);
for(int j=0; j<st.countTokens(); j++)
{
arr[i][j]=Integer.parseInt(st.nextToken());
}
}
return arr;
}
}
//stream end
protected int [][]findSum(int a[][],int b[][])
{
int temp[][]=new int[r][c];//local must be initialize
for(int i=0; i<a.length; i++)//outer loop
for(int j=0; j<a[i].length; j++)//inner loop
temp[i][j]=a[i][j]+b[i][j];//inner loop business logic
return temp;
}
//Display the result matrix
protected void display(int res[][])
{
for(int i=0; i<res.length; i++)
{
for(int j=0; j<res[i].length; j++)
{
System.out.print(res[i][j]+" ");
}
System.out.println();
}
}
public static void main(String[] args) throws IOException
{
Matrix m1=new Matrix(3, 3);//3row and 3 column
Matrix m2=new Matrix(3, 3);
System.out.println("Enter element for First matrix");
int x[][]=m1.getMatrix();
System.out.println("Enter element for Second matrix");
int y[][]=m2.getMatrix();
//add matrix and return result a matrix
int z[][]=m1.findSum(x, y);
System.out.println("\nThe Sum Matrix is :");
m2.display(z);
}
}
/* ******OUTPUT******
Enter element for First matrix
Enter 3 Integer separated with space
1 2 3
Enter 3 Integer separated with space
4 5 6
Enter 3 Integer separated with space
7 8 9
Enter element for Second matrix
Exception in thread "main" Enter 3 Integer separated with space
java.io.IOException: Stream closed
* */