Minha sintaxe está incorreta, nao sei mais o que arrumar

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?

é porque nao existe else com verificação:

else(NAO EXISTE ISSO);
else if(ISSO EXISTE);

vc está atribuíndo, não comparando faça assim

if( y == x/2)

Não analisei seu algorímto, mas olhando superficialmente me pareceu errado.

Atribuição da forma que vc fez no if tb nao vai funcionar, ai vc tera que usar paranteses para atribuir no if.

if(((x=x) / 2) == 0) // +/- isso

Se vc precisa testar até que Y seja igual a 1, então não precisa fazer um FOR, faça um WHILE( Y != 1 ) { todo resto }

E também deve criar antes as variaveis int X = 13 e int Y = 0, por exemplo.

Você criou e inicializou as variaveis x e y??

Resolução do problema…

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:

java ExercicioI 180

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

Espero poder ter ajudado!!!
Bons estudos!!!