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:
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.
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.
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!