[Resolvido]Menu com do...while

13 respostas
Paulo_Santiago

Boa noite!

Estou tentando fazer um exercício de uma apostila de introdução a linguagem Java e não consigo fazer um menu funcionar adequadamente.

Descrição do problema: Era pra fazer três exercicios, onde cada um executaria um laço de repetição (for, while e do...while) e mostrar o nome digitado 100 vezes. Resolvi fazer um exercício único com um menu que exibiria o nome digitado com a opção de laço escolhido. Meu problema é que não estou conseguindo fazer este menu "pegar" o case selecionado e executar, onde só a opão de encerrar o programa funciona.

Caso alguém possa me ajudar, segue o código que fiz até aqui.

import java.util.Scanner;

public class NomeWhile {

	public static void main(String[] args) {
		int opcao;
		String nome;
		int i = 0;
		
		Scanner op = new Scanner(System.in);
		Scanner nm = new Scanner(System.in);
		
		System.out.println("Qual eh seu nome?");
		nome = nm.nextLine();
		
		do{
		System.out.println("O nome digitado será exibido 100 vezes...");
		System.out.println("Digite a opcao desejada: ");
		System.out.println("Digite 1 para fazer com laco 'for';");
		System.out.println("Digite 2 para fazer com laco 'while';");
		System.out.println("Digite 3 para fazer com laco 'do-while';");
		System.out.println("Ou digite 0 para abortar...");
		opcao = op.nextInt();
		
		switch(opcao){
		
		case 0:			
			System.out.println("Ok, ate mais ...");
			break;
			
		case 1:
			for(int c = 0;c<100;c++){
				System.out.println(nome);
			}
			break;
			
		case 2:
			while(i<100){
				System.out.println(nome);
				i++;
			}
			break;
		case 3:
			
			do{
				System.out.println(nome);
				i++;
			}while(i<100);
			break;
			
		default:
			System.out.println("Opcao invalida !!!");
		
		}
		}while(opcao != 0);
		
		System.out.println("Programa encerrado.");
	}

}

13 Respostas

S

Cara e so você tirar um Scanner ,usa um scanner só que vai funcionar!!!

A

Estou baixando o JDK no PC da minha tia, no Rio (tou viajando)…

Por enquanto vai falando o problema q vc tá enfrentando…

Paulo_Santiago

Fiz como disse, retirei um dos Scanner, mas continua não funcionando…Somente a opção de encerrar.
Acredito que o seja uma instrução em lugar errado, porque o menu só é encerrado quando o zero é digitado…Só não tô entendendo qual instrução.

Zeed01

Boa noite galera,

Não ta faltando “{” nos “case” do seu “switch” ?

Tipo:

switch(opcao){  
           
         case 0:           
             { //esta chave
             System.out.println("Ok, ate mais ...");  
             break;  
             } //esta chave
         case 1:  
             { //esta chave
             for(int c = 0;c<100;c++){  
                 System.out.println(nome);  
             }  
             break;  
             } //esta chave

[]s

Paulo_Santiago

Zeed01:
Boa noite galera,

Não ta faltando “{” nos “case” do seu “switch” ?

Tipo:

switch(opcao){  
           
         case 0:           
             { //esta chave
             System.out.println("Ok, ate mais ...");  
             break;  
             } //esta chave
         case 1:  
             { //esta chave
             for(int c = 0;c<100;c++){  
                 System.out.println(nome);  
             }  
             break;  
             } //esta chave

[]s

Nada ainda…
Me parece que o “while(opcao != 0)” faz com que o menu nunca permita que as outras opções seja acionadas. O problema é que não sei que comparação eu poderia fazer nessa linha (linha 55).

P

A lógica parece estar certa, mas não sei como esse scanner funciona.
Tenta pegar a opção com um JOptionPane para testar.

Paulo_Santiago

A questão foi resolvida.
Não tinha nenhum mistério, fechei o Eclipse e quando abri denovo pra mexer novamente o código funcionou certinho, do jeito que estava.

Obrigado pela ajuda.

Zeed01

Bom dia Galera !

Acho que o seu programa tem um probleminha…

Experimente digitar a opção “2” duas vezes seguidas, ou a opção “2” e depois a “3”, ou a “3” e depois a “2”…
Acho que tem um bugzinho ai ! rs

[]s

Paulo_Santiago

Zeed01:
Bom dia Galera !

Acho que o seu programa tem um probleminha…

Experimente digitar a opção “2” duas vezes seguidas, ou a opção “2” e depois a “3”, ou a “3” e depois a “2”…
Acho que tem um bugzinho ai ! rs

[]s

Putz, pior que você tem razão…Não tinha reparado o que acontecia quando solicitava o menu outras vezes. Só não entendi bem o porque :?
Sabe me dizer?

Zeed01

Boa tarde Galera !

Você esta executando via linha de comando ou dentro do Eclipse ou NetBeans ?

Seria interessante você executar dentro do Eclipse e fazer um debug.

O problema é que você não volta o valor de “i” para 0 (ZERO) depois que executa uma vez… então da próxima vez ela ja esta com 100, então se na segunda rodada você escolhe a opção 2 não mostra nada porque i já não é mais < 100, se você escolhe a opção 3 ele só impreme uma vez, porque o “do” sempre executa ao menos uma vez…

[]s

Paulo_Santiago

Zeed01:
Boa tarde Galera !

Você esta executando via linha de comando ou dentro do Eclipse ou NetBeans ?

Seria interessante você executar dentro do Eclipse e fazer um debug.

O problema é que você não volta o valor de “i” para 0 (ZERO) depois que executa uma vez… então da próxima vez ela ja esta com 100, então se na segunda rodada você escolhe a opção 2 não mostra nada porque i já não é mais < 100, se você escolhe a opção 3 ele só impreme uma vez, porque o “do” sempre executa ao menos uma vez…

[]s

Perfeito…igualei a variavel i a zero antes do break nos cases e ficou perfeito…

Fico muito grato pela ajuda !!!

Ah, sobre a IDE, estou utilizando o Eclipse.

A

Putz… Cheguei só agora rs… Tá resolvido aí?

Paulo_Santiago

Já sim Andre, valeu!!!

Criado 22 de abril de 2011
Ultima resposta 23 de abr. de 2011
Respostas 13
Participantes 5