for (int a = 0; a < linhas; a++) {
for (int b = 0; b < colunas; b++) {
System.out.print("Digite a posição [" + (a+1) + "][" + (b+1) + "] da matriz: ");
salao[a][b] = sc.nextInt();
A matriz começa em 0, e você vai até ANTES da última posição (a < linhas) porque se correr até a última (a <= linhas), como ela começa em zero, vai sair dos limites (out of bounds).