Sarebbe utile sapere dove ti genera l'eccezione...

Comunque ad una rapida occhiata ho notato un possibile errore nel ciclo interno del primo metodo: quel i < mat[0].length è voluto o forse volevi scrivere j < mat[0].length?