Problema com if e else!

4 respostas
Neviat

Preciso saber onde está o erro nesse programa :!:
Aqui está o código que escrevi:

public class exerPI {
	public static void main(String args[]) {
		int x;
		x = 10;
		if (x != 1) {
			float y;
			y = (float) x % 2;
			if (y == 0) {
				System.out.println(x);
				x = x / 2;
			}
			else {
				System.out.println(x);
				x = 3 * x + 1;
			}
		}
		else {
		System.out.println(x);
		}
	}
}

Quando executo o programa, aparece isso:

10

Mas você pode ver que “x = 10”, então deveria entrar a parte de if:

if (x != 1) {

Não a de else (contrário de if -> x == 10), que é o que na verdade está entrando.
Onde eu estou errando?
Me ajudem, por favor.

4 Respostas

ViniGodoy

Rode seu código com o depurador.

Quem está imprimindo 10 é a linha 09, não a 18.

Você não queria na verdade colocar o System.out.println depois da conta com x?

InicianteJavaHenriqu

Não tem nada errado. O código entra em if (x != 1) e depois em else (do if (y == 0), porque y é igual a 0.0) , está exibindo 10 no console porque você pediu em System.out.println(x); antes de fazer x = 3 * x + 1;

:thumbup:

paulolimac

Ele entra no If,
depois calcula o y e entra no segundo if,
vai imprimi aqui o x (igual a 10). E ainda vai dividi-lo por 2.

E acaba o programa. :slight_smile:

Neviat

ViniGodoy:
Rode seu código com o depurador.

Quem está imprimindo 10 é a linha 09, não a 18.

Você não queria na verdade colocar o System.out.println depois da conta com x?

Entendi!!! :idea:
Eu estava imaginando que enquanto o x não fosse igual a 1, o if iria continuar se repetindo, mas agora que percebi que isso só acontece com while! :smiley:
Obrigado!

Criado 7 de julho de 2012
Ultima resposta 7 de jul. de 2012
Respostas 4
Participantes 4