Jogo da velha em Java

Tenho um exercício de Jogo da Velha. Ainda está bem simples, tenho que implementar mais alguns métodos. Porém a minha dúvida é, depois que for digitado o valor que esta na matriz, como fazer para essa posição receber um " x " ou " - ". Fiz dois for para percorrer a matriz, com o if fiz a comparação para verificar o valor que foi digitado com o valor da matriz, mas quando tento substituir a posição por um dos caracteres da erro. Já usei Integer.parseInt para converter os caracteres a cima citado, mas da erro.

package jogodavelha;
import java.util.Scanner;
public class MontaJogo {
   int tabuleiro[][] = new int[3][3];
   Scanner entrada = new Scanner(System.in);

protected void mostraTabuleiro(){
    int a=0;
    System.out.println("\t INÍCIO TABULEIRO");
    System.out.println("\t -----------------");
    for(int i=0;i<this.tabuleiro.length;i++){
      for(int j=0;j<this.tabuleiro.length;j++){

          this.tabuleiro[i][j] = a;//populando matriz de 0 a 8
          System.out.printf("\t %d",this.tabuleiro[i][j]);
          a += 1;
      }
      System.out.println();
    }
}

public void comecaJogo(){
    String x = " - ";
    System.out.println("------------------------------------");
    System.out.printf("Digite a coluna e linha do tabuleiro: ");
    int posicao = entrada.nextInt();
    
    //Para comparar a variável posicao com os índices do tabuleiro
    //vai ter que percorrer todo o vetor
    for(int i=0;i<this.tabuleiro.length;i++){
        for(int j=0;j<this.tabuleiro.length;j++){
            if(posicao == this.tabuleiro[i][j]){
                //?????                      
                //?????
            }
        }
    }
}

}

Amigo, tive também um exercício desse na faculdade. Falando a verdade, tente fazer de uma forma mais bassal , sem se importar com performance .

Pelo pouco que lembro, criamosn un método que era chando logo após a jogada de cada jogador. Esse método simples mente imprimia toda a matriz na tela.

Outra coisa que eu me lembro, fizemos por árvore de decisão . Ou seja, fizemos todas a ls possibilidades de jogada. Professor deu um mole e deixou nos colocamos a primeira posição da partida .

O teu problema está no fato de que você está lendo como String e tentando converter para int. Por que não usa o x e o _ como char?

Fiz a modificação, mas preciso atualizar meu tabuleiro para receber a variável. Como faço isso?

Nada disso, um char tem o mesmo tamanho que um int e é perfeitamente armazenável no teu tabuleiro (que é uma matriz de int).

   if(posicao == this.tabuleiro[i][j]){      
         this.tabuleiro[i][j] = x;
         mostraTabuleiro();
     }

Fiz desta forma, mas quando chamo o mostraTabuleiro a matriz fica do mesmo jeito, não aparece o ‘x’.

Então vamos por partes, primeiro, o teu método comecaJogo está errado, ele tem a seguinte solicitação System.out.printf("Digite a coluna e linha do tabuleiro: ");, porém, só permite que você digite uma informação como inteiro int posicao = entrada.nextInt(); o que, obviamente, impede que o jogador defina qual linha e coluna está posicionando sua marca.
Outro ponto, eu não gosto da abordagem de utilizar uma matriz de int para armazenar dados que seriam melhor representados como char ou String, neste caso, sugiro alterar para char tabuleiro[][] = new char[3][3];, pois isso facilita a exibição do conteúdo e o entendimento do jogo.

Valeu pessoal pela ajuda, problema resolvido. Esta ai o código modificado e funcionando.

public static void mostraTabuleiro (String[][] x){
System.out.println(); //Pular linha
for(int i=0 ; i<x.length ; i++){
	for(int j=0 ; j<x.length ; j++){
		System.out.println(x[i][j]+ "\t");
	}
	System.out.println();
}
System.out.println();
}

public void comecaJogo(){
String[][] tabuleiro = new String[3][3];
int linha=0,coluna=0,valid=0,jogadas=0;
Scanner teclado = new Scanner(System.in);


    for(int i=0 ; i<3 ; i++){
     for(int j=0 ; j<3 ; j++){
	tabuleiro[i][j] = "-";
     }
}
 //Entrando com os dados de linha e coluna	
System.out.printf("Digite a linha: ");
linha = teclado.nextInt();
System.out.printf("Digite a coluna: ");
coluna = teclado.nextInt();
 
//Verificando se a posição do tabuleiro é igual a "-"	
if(tabuleiro[linha][coluna].equals("-")){
	tabuleiro[linha][coluna] = "X";		
	mostraTabuleiro(this.tabuleiro);
}
}