public void solicitarPedido() {
System.out.printf("Digite o nome do cliente: ");
String nomeCliente = teclado.nextLine();
while (nomeCliente.isEmpty()) {
System.out.print("O nome do cliente não pode estar vazio. Digite novamente: ");
nomeCliente = teclado.nextLine();
}
Cliente cliente = new Cliente(nomeCliente);
int codigoProduto;
while(true) {
System.out.printf("Digite o código do produto: ");
//if(teclado.hasNextInt()) {
codigoProduto = teclado.nextInt();
if(cardapio.retornarProduto(codigoProduto) != null) {
Produto produto = cardapio.retornarProduto(codigoProduto);
cliente.getProdutos().add(produto);
System.out.print("Deseja adicionar mais produtos? [1 - sim / 2 - não]: ");
int opcao = teclado.nextInt();
while(opcao < 1 || opcao > 2) {
System.out.print("Deseja adicionar mais produtos? [1 - sim / 2 - não]: ");
opcao = teclado.nextInt();
}
if(opcao == 2) {
break;
}
}
//}
System.out.println("Código do produto inválido. Tente novamente!");
teclado.nextLine();
}
Pedido pedido = new Pedido(codigoPedido++, cliente, cliente.getProdutos(), 1);
pedidos.adicionarPedidos(pedido);
}
Dúvida: Esse código tem um problema que, quando o usuário não digita nada na variável codigoProduto(), as entradas vazias parecem que vão sendo acumuladas e quando o usuário digitar uma letra, ao invés, de um num número, a quantidade de vezes que ele digitou a entrada vazia vai ser a quantidade de vezes que vai aparecer essa mensagem: System.out.println("Código do produto inválido. Tente novamente!"); Então o problema é esse, era para aparecer apenas uma vez essa mensagem mas aparece mais de uma vez.
Como posso melhorar o código para fazer todas as verificações para que o usuário não digite uma letra no código do produto, para que o nome do cliente não tenha números e não possa estar vazio?