Maior de Dez

Amigos,

tenho que desenvolver um aplicativo que entre Dez números digitados tenho que apresentar os dois maiores, sem dificuldade consegui buscar o numero maior mas para buscar o segundo não tive sucesso, agradeço antecipadamente a ajuda.

import javax.swing.JOptionPane;

public class MaiorDez{

public static void main ( String args[] )
{  

	
	
             // Variáveis do Aplicativo
  
String numEntrada1;                          // Numero de Entrada
 
int contador;                                    // Contador
            int numEntrada;                              // Numero de Entrada
int numMaior;                                // Maior Entre os Dez 
int numMaior2;                             // Segundo Maior Entre os Dez
			
	    
	
// Inicialização de Variáveis
	
contador   = 0; 
numEntrada = 0;
numMaior   = 0;
numMaior2  = 0;
			
	
System.out.println("Numeros:");
	

            while( contador < 10)
{
       
                   numEntrada1 = JOptionPane.showInputDialog("Valores de Entrada"); 						
       numEntrada  = Integer.parseInt(numEntrada1);   
		   
          if(numEntrada > numMaior)
         {
             numMaior =  numEntrada;  	   
		      
          } // End If	   
		              
		
       contador += 1;  		 	    
         
        
} // End While
	
    
JOptionPane.showMessageDialog(null,
      "Maior Numero : " + numMaior + "\n" + "Segundo Maior: " + numMaior2, "RESULTADO",
JOptionPane.INFORMATION_MESSAGE); 
     	       	    
    
System.exit(0);
    
} // End Metodo Main

} // End Class MaiorDez


int [] numeros = new int[10];

//enche o arrray do jeito que vc quiser

int maior = 0;
int segundomaior =0;

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

     if ( numeros[i] > maior){
            segundomaior = maior;
            maior = numeros[i];
     }

}

Conselho: ESTUDE ORIENTAÇÃO A OBJETOS

Poxa, Leandro.

Porque você não usa a tag code quando posta o seu código?
Eu já devo ter pedido umas 10 vezes…

É tão fácil, confere lá:
http://www.guj.com.br/posts/list/50115.java

Ajude a gente a te ajudar!

[code]import java.util.Arrays;
import javax.swing.JOptionPane;

class MaiorDeDez{
public static void main(String [] args){
int [] array = new int [10];
for(int i=0;i<array.length;i++){
array[i] = Integer.parseInt(JOptionPane.showInputDialog("Entre com o numero "+(i+1))); //preenchendo o array
}
Arrays.sort(array); //esse é um método estático da classe Arrays que vai ordenar o array recebido na ordem crescente

	JOptionPane.showMessageDialog(null,"Dois maiores valores \n "+array[8]+" "+array[9]); //já que o array esta ordenado, eu exibo os dois últimos números que são os maiores
}

}[/code]

[quote=javadev][code]import java.util.Arrays;
import javax.swing.JOptionPane;

class MaiorDeDez{
public static void main(String [] args){
int [] array = new int [10];
for(int i=0;i<array.length;i++){
array[i] = Integer.parseInt(JOptionPane.showInputDialog("Entre com o numero "+(i+1))); //preenchendo o array
}
Arrays.sort(array); //esse é um método estático da classe Arrays que vai ordenar o array recebido na ordem crescente

	JOptionPane.showMessageDialog(null,"Dois maiores valores \n "+array[8]+" "+array[9]); //já que o array esta ordenado, eu exibo os dois últimos números que são os maiores
}

}[/code][/quote]

Em dez números não faz diferença, mas se fosse muitos a ordenção poderia gerar muito processamento desnecessário, vc naum acha?

Mas foi o que o hendrix pediu, dez números:

Vc mesmo já respondeu que não faz diferença. E fica como amostra de outros recursos que talvez o hendrix e/ou outros colegas não conheçam.

Pegando um gancho no código do LuizClaudio, caso o usuário informe ao programa as entradas conforme segue abaixo:

1º) 9
2º) 8
3º) 7
4º) 6
5º) 5
6º) 4
7º) 3
8º) 2
9º) 1
10º) 3

O programa exibirá um resultado: Maior 9 e Segundo Maior 0.
O que está errado. O correto é Maior 9 e Segundo Maior 8.

Não testei, mas é necessário incluir o código abaixo:

if ( numeros[i] < maior && numeros[i] > segundomaior ) { segundomaior = numero; }

Segue abaixo o código completo:

[code]int [] numeros = new int[10];

//enche o arrray do jeito que vc quiser

int maior = 0;
int segundomaior =0;

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

 if ( numeros[i] > maior){   

// segundomaior = maior; Código retirado apenas para nao ficar redundante
maior = numeros[i];
}

 if ( numeros[i] < maior && numeros[i] > segundomaior ) {
      segundomaior = numeros[i];
 }   

}
[/code]

Ok javadev e p5f8, vc’s tem razão :roll: :lol:

Percebi que nas respostas encontram-se estruturas de array, mas o exercício que foi proposto pede que seja realizado o código com os conhecimentos adquiridos até o momento, ou seja, a programação lógica deve ser escrita somente com if/else e while, nada de for e array. Talvez esteja aí a dificuldade.

Se esse problema fosse crescer, maior, 2º maior, 3º maior, etc, e a pessoa quisesse saber n maiores números, eu implementaria uma lista em ordem decrescente com uma capacidade máxima fixa, iria jogando os números lá. Pesquisar seria mole.

[quote=Felipeuff] Percebi que nas respostas encontram-se estruturas de array, mas o exercício que foi proposto pede que seja realizado o código com os conhecimentos adquiridos até o momento, ou seja, a programação lógica deve ser escrita somente com if/else e while, nada de for e array. Talvez esteja aí a dificuldade.
[/quote]

Mas pode usar os mesmos códigos, mas ao invés de ter o array protno, você faz as verificações a cada entrada de código…

Segue abaixo o código para esse exercício:


// Exercício Ex4.17 Ex4_17.java
// Programa que recebe 10 números do usuário e imprime os dois maiores

// Pacote de extensão de Java
import javax.swing.JOptionPane;

public class Ex4_17
{
   public static void main ( String args [] )
   	{
   		int number,				// número recebido do usuário
   			counter = 1,		// contador já inicializado
   			largest = 0,        // maior número inicializado em 0
			largest2 = 0;       // segundo maior número inicializado em 0
   		
   		// recebe o número do usuário e transforma ele de String para Inteiro
   		number = Integer.parseInt (JOptionPane.showInputDialog ("Digite um número: "));
   		
   		while ( counter <=10 )
   		{
   			// atribui o maior valor digitado ao largest
   			if ( largest < number )
   			{
   				largest2 = largest;
   				largest = number;
   			}
   			else
   			{
   				// atribui o segundo maior valor digitado ao largest2
   				if ( largest2 < number )
   				{
   					largest2 = number;
   				}
   				
   			counter++;
   			
   			}
   		}
   		
   		JOptionPane.showMessageDialog ( null, "O maior número digitado é: " + largest + "\n" +
   										"O segundo maior número digitado é: " + largest2);
   		
	} // fim do main
	
} // fim da classe Ex4_17

Só tem a lógica de programação utilizando if/else e while que foi o que o livro do Deitel ensinou até esse capítulo 4. Já que só podia utilizar essa ferramenta e não podia usar for nem array.

Falow…

nao podia de deixar meu codigo tb hehehe

[code]
int maior1 = Integer.MIN_VALUE, maior2 = Integer.MIN_VALUE;
for(int i = 0; i < 10; i++) {
int numero = Integer.parseInt(
JOptionPane.showInputDialog(“Número:”));
if(numero > maior1) {
maior2 = maior1;
maior1 = numero;
} else if(numero > maior2) {
maior2 = numero;
}
}

System.out.println("maior1: " + maior1 + " maior2: " + maior2);[/code]