Adriana, poderia apresentar com mais detalhes a classe que você está implementando o Tabuleiro?
Adriana2
Posso sim
public class Tabuleiro {
private Marca[][] matriz = new Marca [3][3];
publicbooleanhaMarcaNaPosicao(intlin,intcol)throwsException{// verifica se ha marca na posicao indicada por seus parametros, retornando// true em caso afirmativo, ou false em caso negativo; lanca excecao se seus// parametros forem invalidosif(lin<0||lin>2)thrownewException("Linha não existe");if(col<0||col>2)thrownewException("Coluna não existe");for(inti=0;i<=2;i++)for(intj=0;j<=2;j++)if(this.matriz[i][j]!=null)returntrue;returnfalse;}publicMarcagetMarcaNaPosicao(intlin,intcol)throwsException{// resulta a marca que ha na posicao indicada por seus parametros, retornando-a;// retorna null, caso ali nao haja nenhuma marca; lanca excecao se seus// parametros forem invalidosif(lin<0||lin>2)thrownewException("Linha Invalida!");if(col<0||col>2)thrownewException("Coluna Invalida!");returnthis.matriz[lin][col];}publicvoidsetMarcaNaPosicao(Marcamrc,intlin,intcol)throwsException{// coloca mrc na posicao indicada por seus parametros; lanca excecao se seus// parametros forem invalidosif(lin<0||lin>2)thrownewException("Linha Invalida!");if(col<0||col>2)thrownewException("Coluna Invalida!");this.matriz[lin][col]=mrc;}publicMarca[][]getMatriz(){returnthis.matriz;}publicStringtoString(){// retorna o tabuleiro em um String, defidamente formatado para apresentacaoStringret="+----+----+----+\n";ret+="| "+this.matriz[0][0].toString()+"| "+this.matriz[0][1].toString()+"| "+this.matriz[0][2].toString()+"/n";ret+="+----+----+----+\n";ret+="| "+this.matriz[1][0].toString()+"| "+this.matriz[1][1].toString()+"| "+this.matriz[1][2].toString()+"/n";ret+="+----+----+----+\n";ret+="| "+this.matriz[1][0].toString()+"| "+this.matriz[1][1].toString()+"| "+this.matriz[1][2].toString()+"/n";ret+=ret+"+----+----+----+\n";returnret;}publicbooleanequals(Objectobj){// verifica se this é igual a obj, retornando true em caso afirmativo,// ou false em caso negativoif(this==obj)returntrue;if(obj==null)returnfalse;if(!(objinstanceofTabuleiro))returnfalse;Tabuleirotab=(Tabuleiro)obj;
for (int j=0; j<=2;j++)
ret= ret* 7 + new Character(this.matriz[i][j].getSimbolo()).hashCode();
returnret;
}
}
agscripter
Olá Adriana,
Teria algumas dicas para te dar, dentre elas:
Tenta sempre utilizar a classe StringBuilder para concatenação e criação de Strings, ela é mais rápida.
Tenta sempre deixar seus códigos dinâmicos, se você mudar o tamanho da matriz, o resulto se ajusta ao mesmo.
Tenta não repetir código
Então com essas dicas cheguei nesse código:
privateStringcriarLinha(String[]conteudo){StringBuilderstr=newStringBuilder();for(intj=0;j<conteudo.length;j++){str.append("+-");str.append(conteudo[j]);str.append("--");}str.append("\n");returnstr.toString();}privateStringcriarLinhaEmBranco(){String[]linhaConteudo=newString[this.matriz.length];for(inti=0;i<this.matriz.length;i++){linhaConteudo[i]="-";}returnthis.criarLinha(linhaConteudo);}@OverridepublicStringtoString(){StringBuilderstr=newStringBuilder();str.append(this.criarLinhaEmBranco());for(inti=0;i<this.matriz.length;i++){str.append(this.criarLinha(this.matriz[i]));// str.append("Adicionar algo entre as linhas");}str.append(this.criarLinhaEmBranco());returnstr.toString();}