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.");
}
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.
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 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.
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…
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…