Boa tarde.
Sou novo aqui no fórum (como dá pra perceber =D), e estou com uma dúvida em um exercício do livro Java Como Programar - 6ª Edição.
O livro pede para tomar por base o código que fizemos no exercício 4.21 (esse código eu fiz, mas esses exercícios não tem a resposta no livro, então talvez não esteja certo. Mas eu acho que está =D):
import java.util.Scanner;
public class MaiorValor
{
public static void main (String args [])
{
int contador = 1;
int numero = 0;
int maiorValor = 0;
int vendedorFoda = 0;
Scanner entrada = new Scanner(System.in);
while ( contador <= 10)
{
System.out.printf("\nInsira o número de unidades vendidas do vendedor %d: ", contador);
numero = entrada.nextInt();
if (numero > maiorValor)
{
maiorValor = numero;
vendedorFoda = contador;
}
++contador;
}
System.out.printf("\nO maior número de vendas foi do vendedor %d!: %d unidades!\n", vendedorFoda, maiorValor);
System.out.printf("\nParabéns vendedor %d!", vendedorFoda);
}
}
Bom, vamos ao problema:
O livro pede para que agora sejam mostrados na tela os dois maiores valores digitados pelo usuário de um total de 10 valores, e esses não podem ser repetidos, ou seja, se você digitou o 1, e digitá-lo novamente, o programa tem que avisar que o número já foi digitado e pedir para inserir outro.
Como o livro ainda não ensinou arrays, não consigo ver outra forma de fazer isso sem colocar cada valor em uma variável. Mas aí o código fica muito grande pra pouca coisa, então penso que tem alguma outra coisa que eu possa fazer. Só que não me vem à cabeça o que fazer.
Criei um código aqui, mas ele não impede você de digitar novamente o mesmo valor porque ele guarda apenas quatro valores: primeiroValor, segundoValor, numeroAnterior e numeroAtual.
O código é esse:import java.util.Scanner;
public class EncontrarNumeros
{
public static void main (String args[])
{
int numeroAnterior = 0;
int numeroAtual = 0;
int primeiroValor = 0;
int segundoValor = 0;
int contador = 1;
Scanner entrada = new Scanner(System.in);
while ( contador <= 10 )
{
System.out.printf( "\nInsira o valor %d: ", contador);
numeroAtual = entrada.nextInt();
if ( numeroAtual == primeiroValor || numeroAtual == segundoValor || numeroAtual == numeroAnterior)
{
System.out.println("Este numero já foi inserido.");
}
else
{
if ( numeroAtual > primeiroValor)
primeiroValor = numeroAtual;
else if (numeroAtual > segundoValor)
segundoValor = numeroAtual;
numeroAnterior = numeroAtual;
++contador;
}
}
}
}
OBS: Nesse último código eu não coloquei a saída (System.out.printalgumacoisa) porque a trava dos números lá ainda não deu certo.
Obrigado de antemão pela ajuda. o/


