Вы близки, но измените цикл while, чтобы выглядеть следующим образом:
while (in.hasNextLine()) {
Scanner lineIn = new Scanner(line);
//The initial case - this first line is used to determine the size of the array
if(lineIn.hasNext()) {
//Create a String array by splitting by spaces
String[] s = lineIn.nextLine().split(" ");
//Reinitialize the array to hold all of your subarrays
matrix = new int[s.length];
for (int i = 0; i < s.length; i++) {
//Reinitialize each subarray to hold the numbers
matrix[i] = new int[i];
//Finally, parse your data from the String array
matrix[0][i] = Integer.parseInt(s[i]);
}
}
//Repeat the steps now that all of your arrays have been initialized
for (int j = 1; j < matrix.length; j++) {
String[] s = lineIn.nextLine().split(" ");
for (int i = 0; i < s.length; i++) {
matrix[j][i] = Integer.parseInt(s[i]);
}
}
}
Самое большое изменение, которое вы можете сделать, чтобы сделать это проще для себя, - это получить ваши номера в ряд -линия. С каждой строкой, которую вы получаете, легко разбить ее на массив строк, чтобы вы могли разобрать каждый номер отдельно. Сделав это таким образом, вы можете сразу получить всю длину массива без необходимости иметь неприятные счетчики.