Salve a tutti!

Ho un problema con un'array (bidimensionale), dentro la quale vorrei sostituire/aggiungere due elementi.
L'array si chiama "data" ed è 10x10.
Ho provato ad operare così:

codice:
private void MuoviActionPerformed(java.awt.event.ActionEvent evt) {

for (int i = 0; i < data.length; i++) {
            for (int j = 0; j < data.length; j++) {
                if (data[i][j].equals("X")) {
                    data[i][j] = "";
                    data[i][j+1] = "X"; // sposto sopra
                } else if (data[i][j].equals("O")) {
                    data[i][j] = "";
                    data[x][y] = "O"; // x e y sono numeri random da 1 a 10
                }
            }
        }

    }

}
E' collegata ad una jTable e dovrebbe aggiornarsi dopo la pressione di quel tasto, comunque, a parte questo,
come potete vedere, metto i due cicli in modo da scansionare la matrice e che, quando arriva all'elemento "X" lo sposti di una casella sopra (e quindi l'ho tradotto con il "cancella dov'era e riscrivi la nuova posizione").
Mentre, se il ciclo trova "O" allora lo sposta in modo casuale.

Appena premo il bottone mi da questo errore:

codice:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 10
Ringrazio tutti anticipatamente.
Saluti.