Dúvida com repetição

5 respostas
W

Pessoal, estou fazendo curso de Java, mas o mesmo é só hoje as 10h e eu queria ir além de onde o professor está, dei uma pesquisada e consegui usar o while, porém, existe algo errado pois ele não volta para o local onde eu digo para a pessoa digitar novamente o número, ele apenas aceita a numeração e para por ai… Alguem poderia me ajudar?

import java.util.Scanner;

public class ControleDeFluxoDesvio2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner read = new Scanner(System.in);

		int numeroMes;
		numeroMes = 2;
		
		System.out.println("Digite o número do mês que você gostaria de acessar ");
		
		numeroMes = read.nextInt();
		
		switch (numeroMes) {
			    case 1:
			    	System.out.println("Mês 1 Janeiro");
				break;
			
	 			case 2:
	 				System.out.println("Mês 2 Fevereiro");
				break;
				
	 			case 3:
	 				System.out.println("Mês 3 Março");
				break;
				
	 			case 4:
	 				System.out.println("Mês 4 Abril");
				break;
				
	 			case 5:
	 				System.out.println("Mês 5 Maio");
				break;
				
	 			case 6:
	 				System.out.println("Mês 6 Junho");
				break;
				
	 			case 7:
	 				System.out.println("Mês 7 Julho");
				break;
				
	 			case 8:
	 				System.out.println("Mês 8 Agosto");
				break;
				
	 			case 9:
	 				System.out.println("Mês 9 Setembro");
				break;
				
	 			case 10:
	 				System.out.println("Mês 10 Outubro");
				break;
				
	 			case 11:
	 				System.out.println("Mês 11 Novembro");
				break;
				
	 			case 12:
	 				System.out.println("Mês 12 Dezembro");
				break;
		}
				while (numeroMes > 12) {
					System.out.println("Repetir o mês: ");numeroMes = read.nextInt(); //Preciso que este código volte para a parte onde o system.out pede para a pessoa digitar o mês
					
				}
		
		}
		
	
		
	}

5 Respostas

drsmachado

Já estudou algoritmos?
Conhece as estruturas de repetição? Para? Enquanto? Repita?

S
public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner read = new Scanner(System.in);

		int numeroMes;
		numeroMes = 2;
		outer : while (true) {
			System.out
					.println("Digite o número do mês que você gostaria de acessar ");

			numeroMes = read.nextInt();

			switch (numeroMes) {
			case 1:
				System.out.println("Mês 1 Janeiro");
				break outer;

			case 2:
				System.out.println("Mês 2 Fevereiro");
				break outer;

			case 3:
				System.out.println("Mês 3 Março");
				break outer;

			case 4:
				System.out.println("Mês 4 Abril");
				break outer;

			case 5:
				System.out.println("Mês 5 Maio");
				break outer;

			case 6:
				System.out.println("Mês 6 Junho");
				break outer;

			case 7:
				System.out.println("Mês 7 Julho");
				break outer;

			case 8:
				System.out.println("Mês 8 Agosto");
				break outer;

			case 9:
				System.out.println("Mês 9 Setembro");
				break outer;

			case 10:
				System.out.println("Mês 10 Outubro");
				break outer;

			case 11:
				System.out.println("Mês 11 Novembro");
				break outer;

			case 12:
				System.out.println("Mês 12 Dezembro");
				break outer;
			
			default:
				continue;
			}

		}

	}

}

Vamos por partes: eu criei um label para o while. O while(true) vai rodar infinitamente até que receba um break. Todos os meses dão um break no outer. Quando cair em default ele da um continue, ou seja, reinicia o loop while.

Existem formas melhores para se fazer isso mas foi a primeira coisa que me veio a minha cabeça.

E como disse o drsmachado, estude algoritmos.

Scoobydoo

Faz tempo que não programo assim.. mas vou jogar uma ideia nova para você. Se quiser aplicar ou não, fica com sua decisão.

public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner read = new Scanner(System.in);
		int numeroMes = 99;
		String mes = verificaValor(numeroMes)
	}

	public static string verificaValor(numeroMes){
	   ArrayList<String> meses = new ArrayList<String>();
           meses.push("Mês 1 Janeiro");
	   meses.push("Mês 2 Fevereiro");
	   meses.push("Mês 3 Março");
	   meses.push("Mês 4 Abril");
	   meses.push("Mês 5 Maio");
	   meses.push("Mês 6 Junho");
	   meses.push("Mês 7 Julho");
	   meses.push("Mês 8 Agosto");
	   meses.push("Mês 9 Setembro");
	   meses.push("Mês 10 Outubro");
	   meses.push("Mês 11 Novembro");
	   meses.push("Mês 12 Dezembro");
	   while(meses[numeroMes-1] == null){
  		System.out.println("Digite o número do mês que você gostaria de acessar ");
		numeroMes = read.nextInt();
	   }
	   return meses[numeroMes-1];
	}
}
drsmachado
Scoobydoo:
Faz tempo que não programo assim.. mas vou jogar uma ideia nova para você. Se quiser aplicar ou não, fica com sua decisão.
public class Teste {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Scanner read = new Scanner(System.in);
		int numeroMes = 99;
		String mes = verificaValor(numeroMes)
	}

	public static string verificaValor(numeroMes){
	   ArrayList<String> meses = new ArrayList<String>();
           meses.push("Mês 1 Janeiro");
	   meses.push("Mês 2 Fevereiro");
	   meses.push("Mês 3 Março");
	   meses.push("Mês 4 Abril");
	   meses.push("Mês 5 Maio");
	   meses.push("Mês 6 Junho");
	   meses.push("Mês 7 Julho");
	   meses.push("Mês 8 Agosto");
	   meses.push("Mês 9 Setembro");
	   meses.push("Mês 10 Outubro");
	   meses.push("Mês 11 Novembro");
	   meses.push("Mês 12 Dezembro");
	   while(meses[numeroMes-1] == null){
  		System.out.println("Digite o número do mês que você gostaria de acessar ");
		numeroMes = read.nextInt();
	   }
	   return meses[numeroMes-1];
	}
}
O problema de quem enfia a cabeça na programação e esquece que um dia foi noob é isso, sempre quer resolver um problema padrão proposto por professores quando se está aprendendo com uma solução extremamente avançada. Veja que ele está com problemas para entender coisas básicas. Isso me permite compreender que ele ainda não começou a trabalhar efetivamente com orientação a objetos e, está muito, mas muito longe de utilizar coleções. Essa solução é bem interessante, mas o escopo onde a mesma se aplica não é o mesmo onde o autor do tópico se encontra atualmente.
W

Muito Obrigado Sem_Nome! =D
Deu para entender certinho! =D

Criado 24 de abril de 2013
Ultima resposta 24 de abr. de 2013
Respostas 5
Participantes 4