Imprime o valor de x enquanto o x < 1000

Alguém poderia ajudar eu a melhorar este código usando o switch?

// Imprime o valor de x até quando o mesmo for maior que 1000
public class ImpValoresSwitch {
	public static void main(String[] args) {

		int x = 10;
		String s = "";

		do {

			if (x % 2 == 0) {    				
				s = "P";    				
			} else {    				
				s = "I";
			}

			switch (s) {
			  case "P":

				x += +5;

				break;

			  default:
				
				x *= +2;

				break;
			}

			System.out.println(x);

		} while (x < 1000);

	}

}

Você é iniciante em Java, né?

Eu vejo muitos erros nesse teu código aí. Então vou te dar uma dica: Pesquise um exercício de imprimir numeros pares, entenda a lógica e adapte a sua necessidade.

DICA: A lógica você usa em TODAS AS LINGUAGENS DE PROGRAMAÇÃO, e na vida também. Estude bastante isso!

1 curtida
> int x começa com 10, string S começa com "vazio";
> 
> faça{
> se (x for par) {
> s recebe "P";
> }
> senão {
> s recebe "I";
> }
> 
> switch (s) { 
> se S conter "P":
> x soma e recebe +5 (Se ele já soma 5, por que deve somar "+5"?);
> **break;** (O break tbm pode quebrar laços de repetição! Pense nisso!);
> 
> padrão:
> x multiplica e recebe +2 (novamente, erro);
> **break;**
> }
> exiba na tela (x);
> 
> } enquanto o x for menor que 1000 ;
> } 
> }

Isso é a tradução do seu código. Va executando ele mentalmente que verá onde tá errando. Pelo menos sempre funcionou para mim no começo (:

1 curtida

Olá

Eu só estava pensando uma forma melhor para usar o switch, então eu fiz daquela forma buscando uma alternativa e ajuda, mas me recordei que é possível usar no próprio switch o cálculo usando o operador % para identificar se o número da variável x será par ou ímpar.

Veja como ficou:

public class ImpValoresSwitch {

public static void main(String[] args) {
	int x = 10;
	while (x < 1000) {
		switch (x % 2) {
		  case 0:
			x = x + 5;
			break;

		  default:
			x = x * 2;
			break;
		}
		System.out.println(x);

	}
  }
}

Já melhorou muito, em! Mas me diga: Está funcional? Se não, por que não está?