import java.io.*; public class StudentReader { private Student[] roster; public StudentReader( String filename ) { roster = readFile( filename ); } public Student[] getRoster() { return roster; } private Student[] readFile( String filename ) { Student[] result = new Student[50]; // I picked this number to be safe, but... int count = 0; String line = null; try { BufferedReader source = new BufferedReader( new FileReader(filename) ); line = source.readLine(); // ignore the header line while ( true ) { line = source.readLine(); if ( line == null ) break; result[count] = new Student( line ); count++; if ( count >= 50 ) // added to ensure we do break; // not overflow our array } source.close(); } catch (IOException e) { System.out.println( "An error occurred reading the file " + filename ); return null; } if ( count < 50 ) // added to ensure we do return trimStudentArray( result, count ); // not return empty slots return result; } private Student[] trimStudentArray( Student[] bigArray, int actualSize ) { Student[] result = new Student[actualSize]; for ( int i = 0; i < actualSize; i++ ) { result[i] = bigArray[i]; } return result; } }