Olá pessoal, estou aqui hoje para sanar uma duvida que esta me perseguindo nos trabalhos que eu faço.
Bom vamos lá:
Quando eu estou lendo dados do teclado já a algumas vezes me deparei com a seguinte situação
public void AtendeAdministrador() {
Scanner teclado = new Scanner(System.in);
try {
int opcao = -1;
do {
System.out.println(servidor.MostraOpcoes());
opcao = teclado.nextInt();
if (opcao == 1) {
System.out.println(servidor.VisualisarLivros());
} else if (opcao == 2) {
int ano_pub;
String titulo;
System.out.println("Entre com o titulo do livro:");
titulo = teclado.nextLine();
titulo = teclado.nextLine();
System.out.println("Entre com o ano de publicacao:");
ano_pub = teclado.nextInt();
if (servidor.InserirLivros(titulo, ano_pub) == 1)
System.out.println("Livro inserido com sucesso!");
else
System.out.println("Erro ao inserir livro");
} else if (opcao == 3) {
int cod_livro;
System.out.println("Entre com o codigo do livro");
cod_livro = teclado.nextInt();
if (servidor.RemoverLivros(cod_livro) == 1)
System.out.println("Livro Removido com sucesso!");
else
System.out.println("Erro ao remover livro");
} else if (opcao > 4) {
System.out.println("Entre com uma opção valida");
}
} while (opcao != 4);
} catch (RemoteException e) {
e.printStackTrace();
}
}
Então percebam que ali na linha 14 e 15 do codigo estou tendo que ler do teclado duas vezes isso se da pelo motivo que
se eu não fizer isso ele simplesmente ignora o primeiro da linha 14 e vai direto para a linha 17 na outra leitura do teclado.
Isto já me aconteceu algumas vezes e sempre resolvo o problema com essa linha duplicada de leitura, mas agora estou curioso para descobrir
qual é o problema com isso…
quando eu programava em c tinha uma função que chamava fflush e passava como parametro o arquivo de entrada stdin e ai ele limpava o buffer de leitura.
será que isso acontece com o java tenho que limpar o arquivo de entrada?
Obrigado a todos!