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. 
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! =)
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 
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! =)