Estou aprendendo a programar em Java e sou iniciante ainda, e fazendo um curso tive uma dúvida no seguinte exercício:
Variável:
boolean[][] matrix = {
{false, true, false, false, false},
{false, false, false, false, false}
};
Busca:
for(int a = 0; a < matrix.length; a++) {
System.out.print("A ");
for(int b = 0; b < matrix[a].length; b++) {
if(matrix[a][b]) {
System.out.print("TRUE ");
}
System.out.print("B ");
}
}
Nesse trecho do código if(matrix[a][b]) eu não consigo entender como ele reconhece que [b] é true para substituir o texto.
Poderiam por favor, explicar?
Não entendi direito sua pergunta.
Ele só imprimi TRUE quandomatrix[a][b] for true, ele faz isso:
A
matrix[0][0] é verdadeiro? se for, imprima: TRUE
B
matrix[0][1] é verdadeiro? se for, imprima: TRUE
B
matrix[0][2] é verdadeiro? se for, imprima: TRUE
B
matrix[0][3] é verdadeiro? se for, imprima: TRUE
B
matrix[0][4] é verdadeiro? se for, imprima: TRUE
B
A
matrix[1][0] é verdadeiro? se for, imprima: TRUE
B
matrix[1][1] é verdadeiro? se for, imprima: TRUE
B
matrix[1][2] é verdadeiro? se for, imprima: TRUE
B
matrix[1][3] é verdadeiro? se for, imprima: TRUE
B
matrix[1][4] é verdadeiro? se for, imprima: TRUE
B
Bom tem alguns conceitos embutidos:
- Dentro de uma estrutura de decisão
(if) é verificado primeiramente se a resposta é true e no else se por ventura não satisfazer é porque é falso. Então if (true) { } else { }.
- No caso da sua pergunta a
matrix[a][b] retorna os elementos true ou false e no caso do if só vai entrar e imprimir System.out.print("TRUE"); quando for true a posição resgatada da matriz.
Fiz uma alteração no código para imprimir linha, coluna e valor que ai você vai entender o seu código:
Code
boolean[][] matrix = {
{false, true, false, false, false},
{false, false, false, false, false}
};
for(int a = 0; a < matrix.length; a++)
{
for(int b = 0; b < matrix[a].length; b++)
{
System.out.print("Linha " + a + " Coluna " + b);
if(matrix[a][b])
{
System.out.println(" TRUE");
}
else
{
System.out.println(" FALSE");
}
}
}
Output:
Success time: 0.09 memory: 320576 signal:0
Linha 0 Coluna 0 FALSE
Linha 0 Coluna 1 TRUE
Linha 0 Coluna 2 FALSE
Linha 0 Coluna 3 FALSE
Linha 0 Coluna 4 FALSE
Linha 1 Coluna 0 FALSE
Linha 1 Coluna 1 FALSE
Linha 1 Coluna 2 FALSE
Linha 1 Coluna 3 FALSE
Linha 1 Coluna 4 FALSE
Entendido pessoal, obrigado pelas respostas!