While não funciona com mais de uma condição de parada. Não sei porque[RESOLVIDO]

Pessoal por favor me expliquem o que pode estar errado neste código


String tipoVenda;
int opc;

do {
                            tipoVenda = JOptionPane.showInputDialog(null, " 1 - [N]ormal\n 2 - [D]ébito \n 3 - [C]ortesia\n\n Digite uma das opções", "Tipo de venda", JOptionPane.QUESTION_MESSAGE);
                            //Convertendo uma string em um int
                            opc = Integer.parseInt(tipoVenda);
                        } while ((opc != 1 ) || (opc != 2) ||( opc != 3));


Tipo…Esse laço é para garantir que o programa só irá prosseguir se o usuário digitar 1 ,2 ou 3.
Porém ele não prossegue nem quando as opções são 1 ,2 ou 3.

Dúvida básica mas não sei como resolver. Nuncas vi isso . Sempre fiz assim em C …

Quando uso apenas uma condição ele funciona.

aguardo um retorno

Vai ficar horrível, mas tenta assim(opc != 1 || opc != 2 || opc != 3)

Troca o || por &&. Porque do jeito que está, se você digitar 1, ele falha na primeira comparação, mas valida a segunda condição, o que já é suficiente para continuar no while, mas se colocar o &&, ao falhar na primeira condição, é o suficiente para falhar o while inteiro.

[quote]Vai ficar horrível, mas tenta assim

(opc != 1 || opc != 2 || opc != 3)  

[/quote]

Testei desse jeito tb e não deu certo …

Funcionou =D …valeu cara.

Engraçado que usava || em C e nunca deu problema

valeu cara …tópico encerrado

Oi,

while ((opc != 1 ) && (opc != 2) && (opc != 3));

Tchauzin!