1
resposta

Entrada de usuário e loop de repetição

Opa, Vinny! me tira uma dúvida...

Nas suas aulas você encadeia as suas estruturas de captura de dados do usário, uma dentro do escopo da outra para fazer uma sequencia lógica de chamadas.

Porém, esse tipo de estrutura não pemite (até onde meus conhecimentos atuais conseguem dicernir) que eu crie um loop que obriga o usuário digitar um valor correto para seguir em frente.

exemplo:

while(operacao diferente de + ou -){
imprime comando de valor inválido
repete o comando de captura
}

me da uma solução para isso...

desde já agradeço!

1 resposta

Fala, Luis! Boa pergunta, e o raciocínio tá no caminho certo.

Você já matou a charada sem perceber. Relê o que você escreveu:

"while operação diferente de + ou -..."

Isso aí já é a estrutura que resolve seu problema. Você literalmente descreveu um while com uma condição de parada. Agora a pergunta que eu te devolvo é:

O que precisa existir antes do while pra ele ter um valor pra comparar na primeira vez que roda?

E a segunda:

O que precisa acontecer dentro do while pra ele ter uma chance de sair do loop?

Pensa nessas duas perguntas, tenta montar o código, e cola aqui o que saiu — mesmo que não funcione. A gente ajusta junto.

Algumas dicas pra te dar um empurrão:

  1. Pensa no Scanner como uma conversa. Você pode chamar o nextLine() quantas vezes quiser — não precisa ser tudo dentro de um único bloco encadeado. Nada te impede de pedir a operação, validar ela num loop, e só depois seguir pedindo os outros dados.

  2. O padrão clássico é: pede uma vez → entra no while checando se tá errado → dentro do loop, avisa o erro e pede de novo. Quando sai do loop, você tem certeza que o valor é válido.

  3. Testa a condição no papel antes de codar. Se o usuário digitar "*", o que seu while faz? E se digitar "+"? Se as duas respostas fazem sentido, o código tá certo.

Tenta montar e cola aqui — mesmo se der erro, a gente resolve junto. Errar faz parte do processo.

Bora que você tá perto!