Programa não armazena o menor valor das linhas e colunas de uma matriz

A questão pede para gerar e imprimir uma matriz M 10 x 10 com valores aleatórios entre 0-9 e
depois indicar qual é o maior e o menor valor da linha 5 e qual é o maior e menor valor da coluna 7.
Após rodar o código percebi que ele não está armazenando o menor valor da linha e coluna .
Segue o código…

package matrizes;

import java.util.Random;

/*
     Gere e imprima uma matriz M 10 x 10  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 menor valor da coluna 7 
 
 **/

public class Questao04 {

	public static void main(String[] args) {

		int[][] numerosAleatorios = new int[10][10];

		Random numeroRandom = new Random(); // isso gera valores aleatórios

		for (int i = 0; i < numerosAleatorios.length; i++) {

			for (int j = 0; j < numerosAleatorios[i].length; j++) {

				numerosAleatorios[i][j] = numeroRandom.nextInt(101);

			}

		}

		for (int i = 0; i < numerosAleatorios.length; i++) {

			for (int j = 0; j < numerosAleatorios[i].length; j++) {

				System.out.print(numerosAleatorios[i][j] + "   ");

			}

			System.out.println();

		}

		int maiorL5 = 0;
		int menorL5 = 0;
		int linha5 = 5;

		for (int i = 0; i < numerosAleatorios[5].length; i++) {

			if (numerosAleatorios[5][i] > maiorL5) {

				maiorL5 = numerosAleatorios[linha5][i];
			}

			if (numerosAleatorios[5][i] < menorL5) {

				menorL5 = numerosAleatorios[5][i];

			}

		}

		System.out.println("  ");
		System.out.println(" Maior valor da linha 5 = " + maiorL5);

		System.out.println(" Menor valor da linha 5 = " + menorL5);

		int maiorC7 = 0;
		int menorC7 = 0;
		int col7 = 7;

		for (int i = 0; i < numerosAleatorios.length; i++) {

			if (numerosAleatorios[i][col7] > maiorC7) {

				maiorC7 = numerosAleatorios[i][col7];

			}
			if (numerosAleatorios[i][col7] < menorC7) {

				menorC7 = numerosAleatorios[i][col7];

			}

		}

		System.out.println("  ");
		System.out.println(" Maior valor da coluna 7 = " + maiorC7);

		System.out.println(" Menor valor da coluna 7 = " + menorC7);

	}

}

77   68   52   76   45   84   99   50   6   74   
39   34   41   51   1   32   98   10   28   12   
81   3   71   60   75   43   84   86   36   36   
18   27   83   7   10   47   91   46   19   29   
45   22   17   62   58   28   62   19   56   24   
59   13   88   65   50   5   60   40   11   33   
89   72   28   5   34   83   8   23   95   77   
63   43   67   70   96   81   49   49   58   42   
68   86   58   93   88   23   34   11   53   69   
95   81   13   24   56   63   24   19   18   75   
  
 Maior valor da linha 5 = 88
 Menor valor da linha 5 = 0
  
 Maior valor da coluna 7 = 86
 Menor valor da coluna 7 = 0

Fiz algumas tentativas mas não consegui resolver o problema. Alguem poderia me ajudar?

1 curtida

Pessoal , consegui resolver aqui minutos depois após postar o problema.
Coloquei uma condição que enquanto o contador fosse igual a zero a variável responsável por armazenar a menor coluna e menor linha receberiam na primeira iteração o valor aleatório.
Segue o resultado de como ficou…

package matrizes;

import java.util.Random;

/*
     Gere e imprima uma matriz M 10 x 10  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 menor valor da coluna 7 
 
 **/

public class Questao04 {

	public static void main(String[] args) {

		int[][] numerosAleatorios = new int[10][10];

		Random numeroRandom = new Random(); // isso gera valores aleatórios

		for (int i = 0; i < numerosAleatorios.length; i++) {

			for (int j = 0; j < numerosAleatorios[i].length; j++) {

				numerosAleatorios[i][j] = numeroRandom.nextInt(101);

			}

		}

		for (int i = 0; i < numerosAleatorios.length; i++) {

			for (int j = 0; j < numerosAleatorios[i].length; j++) {

				System.out.print(numerosAleatorios[i][j] + "   ");

			}

			System.out.println();

		}

		int maiorL5 = 0;
		int menorL5 = 0;
		int linha5 = 5;

		for (int i = 0; i < numerosAleatorios[5].length; i++) {

			if (numerosAleatorios[5][i] > maiorL5) {

				maiorL5 = numerosAleatorios[linha5][i];
			}
			
			if(i==0) {
				menorL5= numerosAleatorios[linha5][i];
			}

			if (numerosAleatorios[5][i] < menorL5) {

				menorL5 = numerosAleatorios[5][i];

			}

		}

		System.out.println("  ");
		System.out.println(" Maior valor da linha 5 = " + maiorL5);

		System.out.println(" Menor valor da linha 5 = " + menorL5);

		int maiorC7 = 0;
		int menorC7 = 0;
		int col7 = 7;

		for (int i = 0; i < numerosAleatorios.length; i++) {

			if (numerosAleatorios[i][col7] > maiorC7) {

				maiorC7 = numerosAleatorios[i][col7];

			}
			
			if(i==0) {
				
				menorC7 = numerosAleatorios[i][col7];
				
			}
			
			if (numerosAleatorios[i][col7] < menorC7) {

				menorC7 = numerosAleatorios[i][col7];

			}

		}

		System.out.println("  ");
		System.out.println(" Maior valor da coluna 7 = " + maiorC7);

		System.out.println(" Menor valor da coluna 7 = " + menorC7);

	}

}

64   57   54   44   40   97   72   9   53   37   
16   63   84   48   89   34   34   27   80   94   
38   36   74   78   2   23   34   73   55   83   
4   21   78   39   40   77   47   57   9   55   
61   39   62   78   95   49   26   42   64   27   
75   50   10   23   92   6   11   30   17   50   
18   11   33   25   73   2   29   22   41   87   
12   42   59   41   85   26   20   59   2   74   
22   66   15   46   20   45   100   88   48   41   
59   79   26   33   10   35   42   69   6   91   
  
 Maior valor da linha 5 = 92
 Menor valor da linha 5 = 6
  
 Maior valor da coluna 7 = 88
 Menor valor da coluna 7 = 9

Aceito críticas sobre o código.

Ola!

O enunciado diz que os números devem estar entre 0 e 9, mas você definiu o método nextInt para trazer números de 0 a 99, além disso, como 0 faz parte dos números válidos, com o if que você colocou, caso 0 apareça depois do primeiro número e ele não seja também zero, o menor estará errado.

No caso de números entre 0 e 9, bastava inicializar a variável que armazena o memor número com 9 ou um número acima dos valores gerados, assim qualquer número gerado seria igual ou menor que o valor inicial, e não haveria a necessidade do if.

1 curtida

@JGus entendi , obrigado pela orientação!!