@SuppressWarnings("resource")
static Fraction[][] getMatrix ( String filename ){
      int rowBuffer = 30;
      int columnBuffer = 30;
      Fraction[][] matrixBuffer = new Fraction[rowBuffer][columnBuffer];
      int rowCt = 0;
      int columnCt = 0;

      try {
         Scanner sc = new Scanner( new File( filename ));
         sc.useDelimiter( System.getProperty( "line.separator" ) );
         while ( sc.hasNext() ) {
            Scanner lineScanner = new Scanner( sc.next() );
            columnCt = 0;
            while ( lineScanner.hasNextInt() ){
               Fraction input = new Fraction( lineScanner.nextInt(), 1 );
               matrixBuffer[rowCt][columnCt] = input;
               columnCt++;
               // Transfer into bigger array if necessary.
               // **THIS HASN'T BEEN TESTED**
               if ( columnBuffer-2==columnCt ){
                  rowBuffer *= 2;
                  columnBuffer *= 2;
                  Fraction[][] bigger = new Fraction[rowBuffer][columnBuffer];
                  for ( int i = 0; i < rowBuffer/2; i++ ){
                     for ( int j = 0; j < columnBuffer/2; j++ ){
                        bigger[i][j] = matrixBuffer[i][j];
                     }
                  }
                  matrixBuffer = bigger;
               }
            }
            rowCt++;
         }
      } catch ( FileNotFoundException e ) {
         System.err.println( e.getMessage() );
         Usage();
      }
      
      // I won't use the 0 positions in the array for easier coordinates.
      // For example, the first position on the top left is (1,1) not (0,0)
      // Remember a matrix is (row, column). For reference, generally "i"'s
      // correspond to the row, and "j"'s to columns, throughout this program.
      // For example matrix[i][j] is the same as (i,j) or row i, column j.
      Fraction[][] matrix = new Fraction[rowCt+1][columnCt+1];
      // Put matrixBuffer contents into newer, better fitting matrix.
      for ( int i = 0; i < rowCt; i++ ){
         for ( int j = 0; j < columnCt; j++ ){
            matrix[i+1][j+1] = matrixBuffer[i][j];
         }
      }
      rows = rowCt;
      columns = columnCt;
      return matrix;
   }