Do while bugando!

12 respostas
jayrmotta

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!

12 Respostas

ViniGodoy

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…

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!

Guitar_Men

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

LPJava

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

jayrmotta como vc esperava a resposta?

ViniGodoy

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:

F
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.  <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pnglight_smile.png?v=9" title=":slight_smile:" class="emoji" alt=":slight_smile:">

espero ter te ajudado amigão!!
thegoergen

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!

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…

jayrmotta

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

F

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.

jayrmotta

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

ViniGodoy

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.

ViniGodoy

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.

Criado 6 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 12
Participantes 6