Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida no Ex. 9 da Aula 2 - Variáveis e fluxo

Boa tarde!

Gostaria de saber por que o meu código rodou corretamente, porém ele apresenta o valor 13 como primeiro retorno!

package programa;

public class Programa {

public static void main(String[] args) { int x = 13; System.out.println ("Iniciando.."); while (x != 1){ System.out.print (x + ">"); if (x%2 ==0){ x =x / 2; }else { x = 3 * x + 1; } } System.out.println (x); } }

Obrigado!!

2 respostas
solução!

Boa tarde,

Temos o seguinte código, e podemos analisar que a variável x é instanciada com o valor 13, passamos pelo Syso(System.out.println) mostrando "Iniciando..", e ele entra no fluxo de repetição do while, repare que não é trocada o valor do x e ele passa por outro Syso(System.out.println), chamando a váriavel x mostrando 13>, conforme acontece o fluxo a variável x é sendo alterada x = x / 2; ou x = 3 * x + 1;

int x = 13;

System.out.println("Iniciando.."); while (x != 1) { System.out.print(x + ">"); <<< chamou antes da condição alterar o valor if (x % 2 == 0) { x = x / 2; } else { x = 3 * x + 1; } } System.out.println(x); }

A solução desse problema é:

int x = 13;

System.out.println("Iniciando.."); while (x != 1) { if (x % 2 == 0) { x = x / 2; } else { x = 3 * x + 1; }

System.out.print(x + ">"); <<<<<<< - correto } System.out.println(x); }

temos que mostrar o valor depois da condição - System.out.print(x + ">");

Muito obrigado Guilherme!! Agora rodou certinho!