Iterando sobre ArrayBidimensional

boa tarde. mas uma vez estou com problemas com arrays bi-dimensionais. desta vez, estou fazendo um "tabuleiro" de jogo da velha. e estou iniciando cada espaço com o sinal " | ". agora quero exibir o campo de 3 * 3 no meu console. mas nao estou conseguindo. segue o codigo

	for(int i = 0; i < tabuleiro.length; i++) {
			for(int j = 0; j < tabuleiro[i].length; j++) {
				tabuleiro[i][j] = '|';
				tabuleiro[j][i] = '|';
				tabuleiro[j][j] = '|';
				System.out.println(tabuleiro[i][j]);
			}
		}

for(int i = 0; i < tabuleiro.length; i++) { for(int j = 0; j < tabuleiro[i].length; j++) { tabuleiro[i][j] = '|'; tabuleiro[i][j] = '|'; tabuleiro[i][j] = '|'; System.out.println(tabuleiro[i][j]); } }
Acho que fica assim

[quote=duducordeiro_]for(int i = 0; i < tabuleiro.length; i++) { for(int j = 0; j < tabuleiro[i].length; j++) { tabuleiro[i][j] = '|'; tabuleiro[i][j] = '|'; tabuleiro[i][j] = '|'; System.out.println(tabuleiro[i][j]); } }
Acho que fica assim[/quote]?

Como o duducordeiro_ postou, você deve utilizar o mesmo índice(i,j) para atribuir o caractere “|” em cada linha/coluna. Estão todos misturados no seu código, ou seja, a lógica esta incorreta.

eu não entendi porque o código do duducordeiro_ está fazendo a mesma coisa 3x…

tabuleiro[i][j] = '|';³

Opz, passou despercebido isso… só reparei que ele arrumou os índices :slight_smile:
Conforme o drigo.angelo falou, não há necessidade de 3 atribuições pois estão fazendo a mesma coisa.

Correto, eu acabei copiando e apenas ajustando o índice, sendo que é necessário apenas 1x :stuck_out_tongue:

sim. mas estou tendo problemas na logica mesmo; gostaria de que fosse impresso

| | |
| | |
| | |

mas na verdade, tenho a saida
|
|
|
|
|
|
|
|
|

faz um outro for assim:

int i = 0;   
 for(int j = 0; j < tabuleiro.length; j++) {    
            System.out.print(tabuleiro[i][j]);    
            System.out.print(tabuleiro[i+1][j+1]);    
            System.out.println(tabuleiro[i+2][j+2]);    
          
        }

testei aqui e deu certo, mas só vai funcionar se o tamanho do seu ‘i’ for 3

O correto é assim:

for(int[] lin : tabuleiro) { for (int casa : lin) { System.out.print(casa); } System.out.println(); }

Ou assim:

for (int i = 0; i < tabuleiro.length; i++) { for (int j = 0; j < tabuleiro[i].length; j++) { System.out.print(tabuleiro[i][j]); } System.out.println(); }

Obrigado vini, nao tinha pensado no enhanced for… quando chegar em casa vou testar;

Amigo, basta ajustar a quebra de linha para ficar com a formatação que você deseja.
Tente interpretar o código do for, pense nele um pouco que vai entender a lógica.