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

Exercicio aula Variaveis e fluxo números impares e pares

Eu estava tentando resolver o exercicio e coloquei um else if com uma condição, dentro do while, o raciocinio estava certo, mas com isso virou um loop infinito, porque?

class NovoX {
    public static void main(String[] args) {
        int x = 13;

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

Oi gisesonia

Seu algoritmo está fazendo um loop infinito por que ele não sabe identificar um número impar. Lembre-se que a regra para um número ser impar é que se você dividir por 2 o resto é maior que zero, ou seja :

x % 2 >0

Conseguiu entender ? Qualquer dúvida posta aqui.

class NovoX {

public static void main (String[] args) { int x = 13;

System.out.println ("Numeros ímpares de 1 á 13");

for (int i = 1; i <= 13; i++){ if (i % 2 > 0) System.out.println("A variável i vale: " + i); }

}}

insira seu código aqui

class NovoX {

public static void main (String[] args) { int x = 13;

System.out.println ("Numeros ímpares de 1 á 13");

for (int i = 1; i <= 13; i++){ if (i % 2 > 0) System.out.println("A variável i vale: " + i); }

}}

Mais ou menos, eu coloquei um else if, x % 3 == 0, isso não vale como se for ímpar?

solução!

Oi!

O operador % verifica o resto de uma divisão.

Quando você fez x % 2 == 0 você estava verificando se o resto da divisão de x por 2 é igual a 0, ou seja, se o número é par.

Como você escreveu x % 3 == 0 você verificou se o resto da divisão de x por 3 é 0, ou seja, se o número é múltiplo de 3, não necessariamente um número ímpar.

Caso você queria verificar se o número é ímpar, você deve verificar se o resto por 2 é 1:

if (x % 2 != 1) {
   // Faz alguma coisa...
}

Ou, então, como o Caio sugeriu:

if (x % 2 > 0) {
   // Faz alguma coisa...
}

Espero ter ajudado!

Fábio

Muito obrigada, me confundi com isso.