Srs, boa noite. Fiquei um tempo sem ler poder fazer os exercícios e agora estou retornando, porém, não estou conseguindo resolver o exercício 4.23 do livro do Deitel. O maior número consigo encontrar, porém o segundo maior não consigo. Alguém poderia me ajudar na solução do algoritmo ? Agradeço antecipadamente. Segue abaixo:
/*4.23 Utilizando uma abordagem semelhante àquela do Exercício 4.21,encontre os dois maiores valores entre os
*10 valores inseridos.[Nota:Você só pode inserir cada número uma só vez.]
*/
import java.util.Scanner;
public class MaiorDois
{
Scanner entrada = new Scanner(System.in);
private int numero;
private int contador = 1;
private int primeiroMaior;
private int segundoMaior;
public void calcula()
{
while(contador<=10)
{
System.out.printf("Digite um numero: ");
numero = entrada.nextInt();
if(numero > primeiroMaior)
{
primeiroMaior = numero;
}
else if(numero < primeiroMaior)
{
segundoMaior = numero;
}
contador++;
}
System.out.printf("O primeiro número maior é: %d\n", primeiroMaior);
System.out.printf("O segundo número maior é: %d\n", segundoMaior);
}
}
/*4.23 Utilizando uma abordagem semelhante àquela do Exercício 4.21,encontre os dois maiores valores entre os
*10 valores inseridos.[Nota:Você só pode inserir cada número uma só vez.]
*/
import java.util.Scanner;
public class MaiorDois
{
Scanner entrada = new Scanner(System.in);
private int numero;
private int contador = 1;
private int primeiroMaior;
private int segundoMaior;
public void calcula()
{
while(contador<=10)
{
System.out.printf("Digite um numero: ");
numero = entrada.nextInt();
if(numero > primeiroMaior)
{
primeiroMaior = numero;
}
if(numero < primeiroMaior && numero > segundoMenor)
{
segundoMaior = numero;
}
contador++;
}
System.out.printf("O primeiro número maior é: %d\n", primeiroMaior);
System.out.printf("O segundo número maior é: %d\n", segundoMaior);
}
}
Fiz assim:
Axo que seria o jeito mais correto “javamente” para fazer isso…
Assim, se a pessoa quizer mudar a quantidade de números, é só mudar a segundo linha…
E se a pessoa digitar dois numeros iguais, ela ignora, e pega realmente, o SEGUNDO maior…
[code] Scanner scan = new Scanner(System.in);
int[] numeros = new int[10];
int cont = 0;
int primeiromaior = 0, segundomaior = 0;
for (cont = 0; cont < numeros.length; cont++) {
System.out.println("Digite um numero");
numeros[cont] = scan.nextInt();
if (numeros[cont]> primeiromaior) {
primeiromaior = numeros[cont];
}else if ((numeros[cont] > segundomaior) && (numeros[cont]< primeiromaior)) {
segundomaior = numeros[cont];
}
}
System.out.println("O maior é " + primeiromaior);
System.out.println("O segundo maior é " + segundomaior);[/code]