Maior e Menor de um Array

aew pessoal, andem dando uma olhada antes de posta, mais nao axei um post que deu para me entender…
como o topico ja diz, eu quero saber o maior e o menor de um array, eu juro a voces, que ja fiz isso em algoritmo, mais nao tenho salvo e esqueci como se faz! rsrsrs

segue o codigo de como eu estou tentando!

[code]import javax.swing.*;

public class um {

public static void main(String[] args) {

	JOptionPane.showMessageDialog(null,"Minino 5\nMaximo 10!\n");
	
	double Array[]= new double [11];
	double maior=0, menor=0, media=0, diferenca=0;
	int RESP =0,a=0,i;

	for(i=1;i<11;i++){
		Array[i]=Double.parseDouble(JOptionPane.showInputDialog("Entre com o: "+(i)+" Numero"));			
		a++;
		if((i>=5)&&(i<10)){
			RESP = Integer.parseInt(JOptionPane.showInputDialog("Deseja continuar digitando?\n\n1 - SIM\n2 - NAO"));
			if(RESP==2)
				break;
			
		}					
	}
	
	maior = Array[i];
	menor = Array[i];
	
	for(i = i; i<a; i++){
		if(Array[i]>maior)
			maior = Array[i];
		if(Array[i]<menor)
			menor = Array[i];
	}
	
	JOptionPane.showMessageDialog(null, "Maior e: " + maior);
	JOptionPane.showMessageDialog(null, "O menor e: " + menor);	

}

}[/code]

o usuario vai digitar no minimo 5 e no maximo 10 numeros…ate ai tudo bem!

eu vi aqui um usuario usando Math.max(x,y) e Math.min(x,y) mais eu nao entendir como se faz…
tentei fazer…

for(i = i; i<a; i++){ Math.max(maior,Array[i]); }

mais parece que nao e o correto! rsrsrs

e ai? me digam aonde estou errado, como e o correto?

[code]double maior=0;
double menor= Double.MAX_VALUE;

for(i = 0; i< Array.length; i++){
if (maior < Array[i]) {
maior = Math.max(maior, Array[i]);
}

if (menor > Array[i]) {
   menor = Math.min(menor, Array[i]);	

}
}
[/code]

isso resolve utilizando o Math.max e o Math.min

ok, vou implementar aqui…

agora, so uma duvida, voce poderia me informa como o metodo MAX e MIN funciona? rs

[quote=felipetwo]ok, vou implementar aqui…

agora, so uma duvida, voce poderia me informa como o metodo MAX e MIN funciona? rs[/quote]

Claro!

Em ambos você passa dois parametros, no Math.max ele retorna o maior entre eles e no Math.min ele retorna o menor.
Funciona com double, float, int e long. :wink:

o codigo ficou assim:

[code]import javax.swing.*;

public class um {

public static void main(String[] args) {

	JOptionPane.showMessageDialog(null,"Minino 5\nMaximo 10!\n");
	
	double Array[]= new double [11];
	double maior=0, menor=Double.MAX_VALUE, media=0, diferenca=0;
	int RESP =0,a=0,i;

	for(i=1;i<11;i++){
		Array[i]=Double.parseDouble(JOptionPane.showInputDialog("Entre com o: "+(i)+" Numero"));			
		a++;
		if((i>=5)&&(i<10)){
			RESP = Integer.parseInt(JOptionPane.showInputDialog("Deseja continuar digitando?\n\n1 - SIM\n2 - NAO"));
			if(RESP==2)
				break;
			
		}					
	}
	
	for(i = 1; i<a; i++){
		if(maior < Array[i])
			maior = Math.max(maior, Array[i]);
		if(menor < Array[i])
			menor = Math.max(menor, Array[i]);
	}
	
	JOptionPane.showMessageDialog(null, "Maior e: " + maior);
	JOptionPane.showMessageDialog(null, "O menor e: " + menor);	

}[/code]

o maior esta funcionando , mais o menor esta incoerente… o segundo for fiz desse jeito porque o usuario que vai escolher se depois do 5 numero ele vai continuar digitando e assim ate o 10, botei um a++, para fazer a contagem de quantos numeros ele digitou…so explicando! rs

para o menor, é preciso fazer algum tipo de converssao? porque ele esta aparecendo numeros misturado com letras…

[quote=felipetwo]o maior esta funcionando , mais o menor esta incoerente… o segundo for fiz desse jeito porque o usuario que vai escolher se depois do 5 numero ele vai continuar digitando e assim ate o 10, botei um a++, para fazer a contagem de quantos numeros ele digitou…so explicando! rs

para o menor, é preciso fazer algum tipo de converssao? porque ele esta aparecendo numeros misturado com letras…[/quote]

Quando voce setou o menor com Double.MAX_VALUE, você atribuiu a ele o maior double possível ( (2-2-52)·21023 ). Por isso no if do menor não está funcionando.

É assim:

Se a variável que você setou como menor é maior que numero corrente (Array[i]), entao o numero corrente passa a ser o menor… entendeu ?

E não precisa converter… é assim mesmo quando o número é muito grande.

capitei, deu pra entender…

vou termina o trabalho, ainda falta 1 questao…

valeu kokol! =)

Opa… disponha

kokollllll

axei o erro
eu tava botando Math.max em todos os casos, e nao min no outro if

perceba no codigo la em cima rsrs

po, valeu cara!

[quote=felipetwo]kokollllll

axei o erro
eu tava botando Math.max em todos os casos, e nao min no outro if

perceba no codigo la em cima rsrs

po, valeu cara! [/quote]

kkkkkkk… acontece… eu vi de relance o código… e só me chamou a atenção o if(menor < Array[i])

ainda bem que você identificou o problemas. :thumbup:

Pessoal… Dêem uma olhada no código…

Vale realmente apena fazer uma comparação > ou < e depois utilizar os métodos da API Math?

O que aconteceria se vocês chamassem apenas
maior = Math.max(maior, Array[i]);
menor = Math.min(menor, Array[i]);

Dentro do for, não resolveria seu problema? Assim você poderia atribuir sem problemas menor = Double.MAX_VALUE e maior = Double.MIN_VALUE

A API procura sempre facilitar, então vamos usar ela da maneira correta :wink:

double maior = Double.MIN_VALUE;
        double menor = Double.MAX_VALUE;

        double[] array = new double[5];

        array[0] = 1.0d;
        array[1] = 2.0d;
        array[2] = 3.0d;
        array[3] = 4.0d;
        array[4] = 5.0d;

        for (int i = 0; i < array.length; i++) {
            maior = Math.max(maior, array[i]);
            menor = Math.min(menor, array[i]);
        }

        System.out.println("Maior: " + maior + " Menor: " + menor);

sim, fiz o teste aqui agora, e funcionou!

obrigado! =)