[Resolvido]Menu com do...while

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.

[code]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.");
}

}[/code]

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

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

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

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.

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

[quote=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[/quote]

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).

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

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.

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

[quote=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[/quote]

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?

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

[quote=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[/quote]

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.

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

Já sim Andre, valeu!!!