Premetto che emerge molto chiaramente che non hai compreso il concetto di array ed è questo fondamentalmente l'origine del tuo errore. Come hai giustamente pensato per implementare il tuo programma hai bisogno di un array bidimensionale, tuttavia quello che tu invece hai definito è tridimensionale.
codice:
//monodimensionale
int[] mono = {1, 2, 3};
//bidimensionale
int[][] bi = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
//tridimensionele
int[][][] tri = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
Il primo array qui sopra contiene tre elementi mentre il secondo contiene tre sotto-array i quali a sua volta contengono ognuno tre elementi. Se volessi rappresentare i due array potresti vedere il primo come una singola riga di una tabella, con tre colonne mentre il secondo come una tabella con tre righe e tre colonne.
Venendo al tuo errore tu associ ad un array tridimensionale un intero, ecco quindi giustificato l'errore di casting. Oltretutto il metodo readInt ritorna un solo intero anche se tu ne scrivessi mille. Una possibile soluzione per riempire l'array potrebbe essere la seguente:
codice:
...
int[][] ar = new int[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++)
ar[i][j] = Input.readInt();
}
...
EDIT: Sono stato anticipato mentre scrivevo, ma come puoi notare abbiamo entrambi notato la tua poca conoscenza degli array, pertanto prima di tutto ti consiglio di fare chiarezza in merito.