поток закрывается при вызове второго объекта метода getMatrix () для ввода данных #
** Я пытаюсь прочитать данные с клавиатуры с помощью BufferedReader obj. для двух матриц, использующих два отдельных объекта, при использовании 1-го объекта работает корректно ввод, но при вызове через второй объект возникает исключение "STREAM CLOSED" ПОЧЕМУ? при каждом вызове объекта методом getMatrix () для добавления данных в матрицу и ввода данных с клавиатуры в этом методе получается объект Stream для получения данных с клавиатуры, а конец метода закрывает поток, снова вызывается из другого объекта метод getMatrix () и тот же процесс, но во время вызова второго объекта возникла исключительная ситуация ... Поток закрыт ...... **
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
* */