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);
}
}
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!
> 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 (:
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);
}
}
}