Obter os maiores números de cada linha e os menores números de cada coluna da matriz

Boa noite galera do forum, estou precisando muito da ajuda de vcs. Sou iniciante na área de java. Tenho tentado de todas as maneiras responder uma questão que o professor passou, mas não tenho dito sucesso. Sempre da um erro. Essa é a pergunta: Construa um algoritmo que leia um conjunto de números inteiros para preencher uma matriz 10x10 e a parti dai, gere um vetor com os maiores elementos de cada linha e outro vetor com os menores elementos de cada coluna

O meu algoritmo esta dando os números certos. Coloquei 3x3 para facilitar. Abaixo está o código:

[code] int cont=1,maior=0,menor=999;

int[][] matriz = new int[3][3];
int[] linha = new int[3];
int[] coluna = new int[3];

for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
	
System.out.print("Digite o "+(cont++)+"º número:");
Scanner sc = new Scanner(System.in);
matriz[i][j] = sc.nextInt();

linha[i] = matriz[i][j];
coluna[j] = matriz[i][j];

}
}

System.out.println("\rNovo vetor com os elementos maiores de cada linha");

for(int i=0;i<3;i++){

if(linha[i]>maior){
maior = linha[i];
System.out.print(+maior+"\t");

}
}

System.out.println("\rNovo vetor com os elementos menores de cada coluna");

for(int j=0;j<3;j++){

if(coluna[j]<menor){
menor = coluna[j];
System.out.print(+menor+"\t");

}
}
}

}

[/code]

Ola tiger.
Elaborei um aqui em casa agora, para te ajudar, olhe bem atentamente, entenda o código
porque se você não entender de logica, você terá menos oportunidades no mundo da informática.
se esforce ao máximo para resolver os exercícios, pois na carreira de informática, exercícios desse tipo são muito comuns(esse ainda é considerado bem leve).
boa sorte.

[code]public static void main(String[] args) {

	int[][] matriz = new int [10] [10];
	// for de atribuição de valores para a matriz
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			
			matriz[i][j] = (int)((Math.random()*100) + 1); // gerando numero aleatorio
			System.out.print(matriz[i][j] + " | "); // mostrando
			
		}	
		System.out.println("");
	}

	
	
	System.out.println("");
	
	int[] maioresDeCadaLinha = new int[10];
	
	int aux = 0;
	
	// descobre qual o maior numero de cada linha
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			
			aux = Math.max(aux, matriz[i][j]);
			
		}	
		
		maioresDeCadaLinha[i] = aux;
		aux = 0;
		System.out.println("Maior da "+ i + "º linha é " + maioresDeCadaLinha[i]);
	}
	
	System.out.println("");
	
	
	int[] menoresDeCadaColuna = new int[10];
	
	int[] aux1 = new int[10];
	// descobre qual o menor numero de cada coluna
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			
			aux1[j] = matriz[i][j];
			
			if (i==0){
				menoresDeCadaColuna[j] = aux1[j];
			}
			
			if (j==9){
				
				for (int j2 = 0; j2 < 10; j2++) {
					menoresDeCadaColuna[j2] = Math.min(aux1[j2], menoresDeCadaColuna[j2]);
			}
				
			}
		   	
		}	
		
	}
	
	//apenas mostra os menores numero de cada coluna
	for (int i = 0; i < menoresDeCadaColuna.length; i++) {
		
		System.out.println("Menor da "+ i + "º coluna é " + menoresDeCadaColuna[i]);
		
	}
	
	
}[/code]

Ola ZeTripe. Anteriormente eu tinha feito com o Math, mas o professor não aceitou. Ele disse que eu teria que fazer o exercício sem usa-lo. Porém não achei nada na net que ensinasse a fazer dessa forma. Teria como me ensinar fazer essa questão se utilizar o Math?

Mais isso e bem fácil, repare e note
o método Math.Max(2,3) você passa 2 números como parâmetro e ele retorna o numero que for maior, o Math.min(2,3) mesma coisa, mais retorna o menor então no caso é a mesma coisa de você fazer isso

[code]// descobre qual o maior numero de cada linha
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {

			if (aux<matriz[i][j]){
				aux = matriz[i][j];
			}
			
		}	
		
		maioresDeCadaLinha[i] = aux;
		aux = 0;
		System.out.println("Maior da "+ i + "º linha é " + maioresDeCadaLinha[i]);
	}[/code]

[code]// descobre qual o menor numero de cada coluna
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {

			aux1[j] = matriz[i][j];
			
			if (i==0){
				menoresDeCadaColuna[j] = aux1[j];
			}
			
			if (j==9){
				
				for (int j2 = 0; j2 < 10; j2++) {
					if (menoresDeCadaColuna[j2]> aux1[j2]){
						menoresDeCadaColuna[j2] = aux1[j2];
					}
			}
				
			}
		   	
		}	
		
	}[/code]

ZeTripe agora eu não entendi uma coisa. Porque o outro que verifica o menor valor tem dois if?

O primeiro if é o de i=0

se o if for = 0 significa que é a primeira volta do for,

Note que o

int[] menoresDeCadaColuna = new int[10];

é iniciado sem valor nenhum, para que eu possa compara-lo com alguma outra variável ele não pode ser nulo.
então enquanto o i=0 haverá valores nulo dentro do menoresDeCadaColuna .
agora o o if j=9, o j só fica igual a 9 quando eu li todos os valores de um linha da matriz
ou seja 1 valor de cada coluna certo?.

e no for dentro do if j=9 tem um for, que vai comparar o valores da linha lida com os valores que estão por enquanto como menor da coluna da matriz.

eu acho meio difícil explicar pro escrita, mas espero que você tenha intendo algo.

O código que acha o menor valor ta dando erro aqui. Não entendo :frowning:

ZeTripe tem como postar o código completo?

Aqui funciona parfeitamente

[code]public class Matriz {

/**
 * @param args
 */
public static void main(String[] args) {
	
	int[][] matriz = new int [10] [10];
	// for de atribuição de valores para a matriz
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			
			matriz[i][j] = (int)((Math.random()*100) + 1); // gerando numero aleatorio
			System.out.print(matriz[i][j] + " | "); // mostrando
			
		}	
		System.out.println("");
	}

	
	
	System.out.println("");
	
	int[] maioresDeCadaLinha = new int[10];
	
	int aux = 0;
	
	// descobre qual o maior numero de cada linha
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
		
			if (aux<matriz[i][j]){
				aux = matriz[i][j];
			}
			
		}	
		
		maioresDeCadaLinha[i] = aux;
		aux = 0;
		System.out.println("Maior da "+ i + "º linha é " + maioresDeCadaLinha[i]);
	}
	
	System.out.println("");
	
	
	int[] menoresDeCadaColuna = new int[10];
	
	int[] aux1 = new int[10];
	// descobre qual o menor numero de cada coluna
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10; j++) {
			
			aux1[j] = matriz[i][j];
			
			if (i==0){
				menoresDeCadaColuna[j] = aux1[j];
			}
			
			if (j==9){
				
				for (int j2 = 0; j2 < 10; j2++) {
					if (menoresDeCadaColuna[j2]> aux1[j2]){
						menoresDeCadaColuna[j2] = aux1[j2];
					}
			}
				
			}
		   	
		}	
		
	}
	
	//apenas mostra os menores numero de cada coluna
	for (int i = 0; i < menoresDeCadaColuna.length; i++) {
		
		System.out.println("Menor da "+ i + "º coluna é " + menoresDeCadaColuna[i]);
		
	}
	
	
}

}[/code]

Valeu ZeTripe :thumbup:
Suas explicações me deram uma luz. Estou começando a entender melhor. O que ta faltando é eu aperfeiçoar
a minha lógica. Obrigado pela ajuda