Do while bugando!

do { System.out.println("Opções: contas, dados de clientes e funcionários"); opcao = src.next(); } while ((!opcao.equals("contas")) || (!opcao.equals("dados de clientes")) || (!opcao.equals("funcionarios")) || (!opcao.equals("funcionários")));

Isso ta gerando um loop, mesmo eu digitando uma das opcoes corretas ele repete o do while e quando eu digito “dados de clientes” ele aparece a mensagem 3 vezes.

Podem me ajudar? ;D obrigado ae galera!

Bugada está sua lógica.

Vc devia estar usando && no lugar de ||.

Senão ele repete toda vez que a opção for diferente disso, OU daquilo, OU daquilo outro…

Nossa fi, se ta de TPM?
Haha, aqui come um chocolate! rs

Eu sou iniciante e por isso estou no java básico… nao precisa me da um tiro porque eu errei, era só nao responder!

Por favor sem sentimentalismos no fórum, isso soa meio gay… Ele apenas foi direto e objetivo…

tb nao vi ofensa nenhum do vinny o cara foi pratico e direto…

jayrmotta como vc esperava a resposta?

Se vc der uma lida nas minhas 3500 mensagens, vai ver que eu não costumo a desrespeitar outros usuários do fórum. E que o fórum que eu mais gosto de participar é o de iniciantes, além dos tópicos sobre threads e jogos.

Vc perguntou, eu respondi. Mas não pude deixar de comentar que quem era bugado não era o while… em geral, é pouco provável que a linguagem tenha erros (embora eu já tenha pegado alguns erros em algumas APIs do Java, em especial o Swing). :wink:

Cara troca também esse trecho opcao = src.next() por opcao = src.nextLine();
por que o método next() tem como delimitador o espaço ,ou seja se vc digitar a seguinte frase;
"dados de clientes " o método next() vai ler a string até encontrar um espaço e para. :slight_smile:
espero ter te ajudado amigão!!

[quote=jayrmotta]Nossa fi, se ta de TPM?
Haha, aqui come um chocolate! rs

Eu sou iniciante e por isso estou no java básico… nao precisa me da um tiro porque eu errei, era só nao responder![/quote]

O ViniGodoy foi bem educado até. Geralmente quando eu vejo umn erro desses de lógica eu fico P da vida e ia xingar… hehehehe
Não entendi essa tua colocação também… Até pensei que tinha um outro post antes do Vini, que foi deletado por ter sido muito grosseiro…

oO … :?:

quando eu perguntei … só ele respondeu … ai quando eu disse que ele brigo todo mundo respondeu…

“Bugada é sua lógica” não é ser direto … enfim … ta bao … pelo menos ele respondeu a pergunta e nao ficou respondendo intriguinha oO

Bom acho que não é por ai galera.Aqui no forum tem de tudo ,desde o iniciante ao super mega profissional.Mas quem entre nós nunca cometeu um erro básico?Vamos todos com calma.Inclusive
xingar alguém porque erra?Ninguém nasce sabendo tudo todos aprendemos
atráves de tentativas e erros.O titulo while bugando é ofensivo ?Me parace que este forum não é do
James Gosling ,por tanto não vejo mótivo para tanta confusão.

ai … até que enfim um que entendeu …

sim eu cometi um erro infame … eu conheço java a 1mes … me desculpem … só nao precisava 5000 post pra criticar ao inves de solucionar o problema e dar closed no topic

:stuck_out_tongue: vlw ae

Não foi o que eu fiz no primeiro post?

O “bugado é a sua lógica” foi uma ironia, uma brincadeira, pq vc disse que o while era bugado.
Mas é bom lembrar que em fórum não tem entonação de voz, nem tom de brincadeira.

Por isso a sua má interpretação. E, lendo de novo, a frase ficou meio esquisita mesmo.

Aliás, por conta da falta de entonação, eu também não me ofendi quando vc disse:
"Nossa fi, se ta de TPM?
Haha, aqui come um chocolate! rs "

Pelo rs, eu deduzi que vc tava brincando também. :wink:

Via de regra, é sempre bom achar que o pessoal do fórum não tá atirando pedra em vc.
Mesmo que pareça o contrário.

Agora que eu notei. Vc também pode tirar para fora dos parênteses todos aqueles nots:

Lembre-se
!(A || B) == !A && !B

Portanto, se você prefere o OU, pode deixar o while assim:

do { System.out.println("Opções: contas, dados de clientes e funcionários"); opcao = src.next(); } while (!(opcao.equals("contas") || opcao.equals("dados de clientes") || opcao.equals("funcionarios") || opcao.equals("funcionários"));

Eliminei também uns parênteses desnecessários.