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
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];
}
}
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
}
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?
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…
// 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.