Java matriz menor_numero_linha_cinco e menor_numero_coluna_sete ficam zerados

eai galera ainda sou um iniciante em java
não consigo encontra o motivo da variável menor_numero_linha_cinco e menor_numero_coluna_sete não receber o menor número

obs: inicializei as variáveis menor_numero_linha_cinco e menor_numero_coluna_sete com o valor de 9

import java.util.Scanner;
/*
Gere e imprima uma matriz M 10x10 com valores aleatórios entre
0-9. Após isso indique qual é o maior e o menor valor da linha 5 e
qual é o maior e o menor valor da coluna 7.
 */

public class Ex2_Matriz {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		//declarando matriz
		int matriz[][] = new int[10][10];
		
		//declarando variáveis 
		int num = 0;
		int maior_linha_cinco = 0;
		int menor_linha_cinco = 9;
		int maior_coluna_sete = 0;
		int menor_coluna_sete = 9;
		
		System.out.println("!!! insira valores entre 0-9 !!!");
		
		//inicializando a matriz
		for(int i = 0; i < 10; i++) {
			for(int j = 0; j < 10; j++) {
				System.out.print("insira número: ");
				num = scan.nextInt();
				
				matriz[i][j] = num;
				
				//condição para ser o maior número na linha cinco
				if(matriz[5][j] > maior_linha_cinco) {
					maior_linha_cinco = matriz[5][j];
				}
				
				//condição para ser o menor número na linha cinco
				if(matriz[5][j] < menor_linha_cinco) {
					menor_linha_cinco = matriz[5][j];
				}
				
				//condição para ser o maior número na coluna sete
				if(matriz[i][7] > maior_coluna_sete) {
					maior_coluna_sete = matriz[i][7];
				}
				
				//condição para ser o menor número da coluna sete
				if(matriz[i][7] < menor_coluna_sete) {
					menor_coluna_sete = matriz[i][7];
				}
			}
		}
		
		//mostrando a saída da matriz
		for(int i = 0; i < 10; i++) {
			for(int j = 0; j < 10; j++) {
				System.out.print(matriz[i][j] + " ");
			}
			System.out.println("");
		}
		
		//mostrando o maior e menor número da linha cinco e coluna sete
		System.out.println("maior número da linha cinco: " + maior_linha_cinco);
		System.out.println("menor número da linha cinco: " + menor_linha_cinco);
		System.out.println("maior número da coluna sete: " + maior_coluna_sete);
		System.out.println("menor número da coluna sete: " + menor_coluna_sete);
		
	}

}

O problema é que as matrizes são sempre inicializadas com 0. Logo seu segundo if vai ser verdadeiro na primeira interação do loop e a sua variável receberá 0. O mesmo vale para o último. Verificando se você está na linha 5 ou na culuna 7, já vai ser suficiente, acredito eu.

    //condição para ser o menor número na linha cinco
    if(i == 5 && matriz[5][j] < menor_linha_cinco) {
        menor_linha_cinco = matriz[5][j];
    }
            				
    //condição para ser o menor número da coluna sete
    if(j == 7 && matriz[i][7] < menor_coluna_sete) {
        menor_coluna_sete = matriz[i][7];
    }

obrigado @Jelson1 nem passou pela minha cabeça que as matriz são iniciadas(tinha esquecido desse detalhe kk ) com zero. eu coloquei desse jeito que vc mencionou agora a variável menor_numero_linha_cinco esta recebendo o valor , mais a menor_numero_coluna sete ainda continua zerada. vou corre atrás desse erro agora obrigado pela ajuda

1 curtida

Bom dia @pacholita, testei aqui e aparentemente está correto:

import java.util.Scanner;
/*
Gere e imprima uma matriz M 10x10 com valores aleatórios entre
0-9. Após isso indique qual é o maior e o menor valor da linha 5 e
qual é o maior e o menor valor da coluna 7.
 */

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		//declarando matriz
		int matriz[][] = new int[10][10];
		
		//declarando variáveis 
		int num = 0;
		int maior_linha_cinco = 0;
		int menor_linha_cinco = 9;
		int maior_coluna_sete = 0;
		int menor_coluna_sete = 9;
		
		System.out.println("!!! insira valores entre 0-9 !!!");
		
		//inicializando a matriz
		for(int i = 0; i < 10; i++) {
			for(int j = 0; j < 10; j++) {
				System.out.print("insira número:\n");
				num = scan.nextInt();
				
				matriz[i][j] = num;
				
				//condição para ser o maior número na linha cinco
				if(i == 5 && matriz[5][j] > maior_linha_cinco) {
					maior_linha_cinco = matriz[5][j];
				}
				
				//condição para ser o menor número na linha cinco
				if(i == 5 && matriz[5][j] < menor_linha_cinco) {
					menor_linha_cinco = matriz[5][j];
				}
				
				//condição para ser o maior número na coluna sete
				if(j == 7 && matriz[i][7] > maior_coluna_sete) {
					maior_coluna_sete = matriz[i][7];
				}
				
				//condição para ser o menor número da coluna sete
				if(j == 7 && matriz[i][7] < menor_coluna_sete) {
					menor_coluna_sete = matriz[i][7];
				}
			}
		}
		
		//mostrando a saída da matriz
		for(int i = 0; i < 10; i++) {
			for(int j = 0; j < 10; j++) {
				System.out.print(matriz[i][j] + " ");
			}
			System.out.println("");
		}
		
		//mostrando o maior e menor número da linha cinco e coluna sete
		System.out.println("maior número da linha cinco: " + maior_linha_cinco);
		System.out.println("menor número da linha cinco: " + menor_linha_cinco);
		System.out.println("maior número da coluna sete: " + maior_coluna_sete);
		System.out.println("menor número da coluna sete: " + menor_coluna_sete);
		
	}

}


Só tem um detalhe os índices da sua matriz variam de 0 a 9. Então quando você fala linha cinco, seria a linha de índice 5 ou a quinta linha. Se for a quinta linha o índice dela seria 4. Mas isso só é uma dúvida minha mesma!

estou falando da linha de indice 4

eu executei esse código e esta funcionando corretamento

agora quando eu executo o meu a variável menor_coluna_sete ainda continua zera, já tentei um monte de coisa e ainda fica nesse erro

import java.util.Scanner;
/*
Gere e imprima uma matriz M 10x10 com valores aleatórios entre
0-9. Após isso indique qual é o maior e o menor valor da linha 5 e
qual é o maior e o menor valor da coluna 7.
 */

public class Ex2_Matriz {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		
		//declarando matriz
		int matriz[][] = new int[10][10];
		
		//declarando variáveis 
		int num = 0;
		int maior_linha_cinco = 0;
		int menor_linha_cinco = 9;
		int maior_coluna_sete = 0;
		int menor_coluna_sete = 9;
		
		System.out.println("!!! insira valores entre 0-9 !!!");
		
		//inicializando a matriz
		for(int i = 0; i < 10; i++) {
			for(int j = 0; j < 10; j++) {
				System.out.print("insira número: ");
				num = scan.nextInt();
				
				matriz[i][j] = num;
				
				//condição para ser o maior número na linha cinco
				if(i == 5 && matriz[5][j] > maior_linha_cinco) {
					maior_linha_cinco = matriz[5][j];
				}
				
				//condição para ser o menor número na linha cinco
				if(i == 5 && matriz[5][j] < menor_linha_cinco) {
					menor_linha_cinco = matriz[5][j];
				}
				
				//condição para ser o maior número na coluna sete
				if(i == 7 && matriz[i][7] > maior_coluna_sete) {
					maior_coluna_sete = matriz[i][7];
				}
				
				//condição para ser o menor número da coluna sete
				if(i == 7 && matriz[i][7] < menor_coluna_sete) {
					menor_coluna_sete = matriz[i][7];
				}
			}
		}
		
		//mostrando a saída da matriz
		for(int i = 0; i < 10; i++) {
			for(int j = 0; j < 10; j++) {
				System.out.print(matriz[i][j] + " ");
			}
			System.out.println("");
		}
		
		//mostrando o maior e menor número da linha cinco e coluna sete
		System.out.println("maior número da linha cinco: " + maior_linha_cinco);
		System.out.println("menor número da linha cinco: " + menor_linha_cinco);
		System.out.println("maior número da coluna sete: " + maior_coluna_sete);
		System.out.println("menor número da coluna sete: " + menor_coluna_sete);
		
	}

}

Captura%20de%20tela%20de%202021-01-28%2013-38-30

Opa nas duas condições acima não é i == 7, mas sim, j == 7. Isso nos Ifs que se refere à coluna. Dá uma olhada de novo na solução que postei acima.


Se for assim você deve mudar o índice 5 para 4 nos IFs da linha e o índice 7 para 6 nos IFs da coluna.

linha 1 - tem índice 0
linha 2 - tem índice 1
linha 3 - tem índice 2
...
linha 5 - tem índice 4
...
linha 10 - tem índice 9

Compreendeste? Se eu tiver entendendo certo tem esse detalhe também.

obrigado vou da uma olhada aqui. Depois disso que você falou já estou compreendendo melhor vlw pela ajuda

1 curtida