Bom dia pessoal estou tentando fazer resolver o exercicio 7 da apostila caelum:
7-(opcional) Escreva um programa que, dada uma variável x (com valor 180, por exemplo), temos y de acordo
com a seguinte regra:
se x é par, y = x / 2
se x é impar, y = 3 * x + 1
imprime y
O programa deve então jogar o valor de y em x e continuar até que y tenha o valor final de 1. Por
exemplo, para x = 13, a saída será:
40 -> 20 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2 -> 1
Imprimindo sem pular linha
Um detalhe importante do método que estamos usando até agora é que uma quebra de linha é
impressa toda vez que o chamamos. Para não pular uma linha, usamos o método a seguir:
System.out.print(variavel);
Meu código está assim:
class ExercicioI {
public static void main(String[] args) {
for (int y, x=0; x<10; x++) {
if (x= x%2==0) {
else (y= x/2) {
System.out.print(y);
}
}
if (x = x % 3 == 0) {
else (y = 3 * x + 1) {
System.out.print(y);
}
}
}
}
}
Mas sempre me retorna erro na linha 5 e 9. Eu ja tirei e coloquei colchetes e nada.
Pessoal onde eu ainda estou errando? E a minha lógica com o que o exercicio pede está correta?
class ExercicioI {
public static void main(String[] args) {
int x = Integer.valueOf(args.toString());
int y = 0;
do {
if (x % 2 != 0) {
y = x / 2;
} else {
y = x * 3 + 1;
}
System.out.print(y + " ");
} while (y != 1);
}
Execução do aplicativo:
Como já dito pelos amigos acima o comando “else” não pode receber nenhum parâmetro de comparação, ele por si só já é como se a grosso modo dissesse:
“Se já foram verificadas todas as verificações anteriores e não é, então fazer isso!”
Fiz esse programinha e ficou assim:
package exemplos;
public class Teste {
public static void main(String args[]) {
int x = 180;
int y = 0;
do {
if ( (x % 2) == 0) {
y = x / 2;
}
else {
y = 3 * x + 1;
}
System.out.print(x + " -> ");
x = y;
} while (y != 1);
System.out.print(" 1");
}
}