Maior e Menor de um Array

11 respostas
felipetwo

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!

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);	
	
	}
	

}

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?

11 Respostas

kokol_fmt
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]);	
   }    		    	    	
}

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

felipetwo

ok, vou implementar aqui…

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

kokol_fmt

felipetwo:
ok, vou implementar aqui…

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

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:

felipetwo

o codigo ficou assim:

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);	
	
	}

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...

kokol_fmt

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…

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.

felipetwo

capitei, deu pra entender…

vou termina o trabalho, ainda falta 1 questao…

valeu kokol! =)

kokol_fmt

Opa… disponha

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!

kokol_fmt

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!

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:

B

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);
felipetwo

sim, fiz o teste aqui agora, e funcionou!

obrigado! =)

Criado 22 de abril de 2009
Ultima resposta 22 de abr. de 2009
Respostas 11
Participantes 3