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

7 respostas
M

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?

7 Respostas

evertonsilvagomesjav

é porque nao existe else com verificação:

else(NAO EXISTE ISSO);
else if(ISSO EXISTE);
Luiz-SP

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.

evertonsilvagomesjav

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
romarcio

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.

LipeJava

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

Java_Lover

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
Carreiro

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!!!

Criado 2 de setembro de 2010
Ultima resposta 3 de set. de 2010
Respostas 7
Participantes 7