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{
publicstaticvoidmain(Stringargs[]){// Variáveis do AplicativoStringnumEntrada1;// Numero de Entradaintcontador;// ContadorintnumEntrada;// Numero de EntradaintnumMaior;// Maior Entre os Dez intnumMaior2;// Segundo Maior Entre os Dez// Inicialização de Variáveiscontador=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 WhileJOptionPane.showMessageDialog(null,"Maior Numero : "+numMaior+"\n"+"Segundo Maior: "+numMaior2,"RESULTADO",JOptionPane.INFORMATION_MESSAGE);System.exit(0);}// End Metodo Main
importjava.util.Arrays;importjavax.swing.JOptionPane;classMaiorDeDez{publicstaticvoidmain(String[]args){int[]array=newint[10];for(inti=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 crescenteJOptionPane.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}}
Luiz-SP
javadev:
importjava.util.Arrays;importjavax.swing.JOptionPane;classMaiorDeDez{publicstaticvoidmain(String[]args){int[]array=newint[10];for(inti=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 crescenteJOptionPane.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}}
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?
J
javadev
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.
p5f8
Pegando um gancho no código do LuizClaudio, caso o usuário informe ao programa as entradas conforme segue abaixo:
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.
B
Bruno_Laturner
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.
thegoergen
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.
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…
Felipeuff
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 Javaimportjavax.swing.JOptionPane;publicclassEx4_17{publicstaticvoidmain(Stringargs[]){intnumber,// número recebido do usuáriocounter=1,// contador já inicializadolargest=0,// maior número inicializado em 0largest2=0;// segundo maior número inicializado em 0// recebe o número do usuário e transforma ele de String para Inteironumber=Integer.parseInt(JOptionPane.showInputDialog("Digite um número: "));while(counter<=10){// atribui o maior valor digitado ao largestif(largest<number){largest2=largest;largest=number;}else{// atribui o segundo maior valor digitado ao largest2if(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.