IF não funciona rs

8 respostas
D

Olá amigos!!

Criei um if, mas ele nao entra na condição de numParcelas = qtdeParcelas, ele chega até lá e quando eu verifico, os 2 campos estão com o valor de “5” mas a mensagem não está sendo setada. Alguém pode me dar uma força com isso?

Integer qtdeParcelas = projetoVO.getQtdeParcelas();
							Integer numParcela = parcelaVO.getNuParcela();
							numParcela.intValue();
							qtdeParcelas.intValue();
							

							String quantidadeDias = projetoVO.getQtdeDias();
							int qtdeDias = Integer.parseInt(quantidadeDias);
							
							if (qtdeDias <=22) {
								projetoVO.setCondPagamento("100 %  na homologação");
								parcelaVO.setFaturamento("Total");
							} else if (qtdeDias <= 44) {
								projetoVO.setCondPagamento("Uma parcela de 40% + 60%  na homologação");
								parcelaVO.setFaturamento("Parcial");
								if (qtdeParcelas.intValue() == numParcela.intValue()) {
									projetoVO.setCondPagamento("60%  na homologação");
								}
							} else if (qtdeDias <= 66) {
								projetoVO.setCondPagamento("Duas parcelas de 30% + 40% na homologação");
								parcelaVO.setFaturamento("Parcial");
								if (qtdeParcelas == numParcela) {
									projetoVO.setCondPagamento("40% na homologação");
								}
							}

8 Respostas

cassio

Amigo, vc esta com um erro de logica ai…

Vc tem uma estrutura assim:

if(){}
else if(){}
else if(){}

mas a condição do primeiro if é

if (qtdeDias <=22){}

Os outros dois if, como estao precedidos por um “else”, somente serao executados caso este primeiro if que copiei no trecho de codigo acima retorne falso, certo?! Pois é… Só que as condicoes que vc colocou sao:

primeiro if ==> if (qtdeDias <=22)

segundo if ==> else if (qtdeDias <= 44)

terceiro if ==> else if (qtdeDias <= 66)

Preste atenção se um numero é menor que 22, ele consequentemente é menor que 44 e menor que 66… certo?! Acho que tem algo errado com a condiao dos seus if’s…
:wink:

Resumindo: Se os valores sao iguais a 5, como no exemplo que vc colocou, ele entra no PRIMEIRO if, e sai fora da estrutura… Sua mensagem esta dentro do if errado!? :slight_smile:

Abraço! :slight_smile:

D

Mas os IF’s estyão funcionando, ele só não esta setando a mensagem se q qtde parcels for igual ao numero da parcela.

Onde que eu posso colocar este campo? Pq ele tb depende da qtde de dias!

bland

cassio,

Davi está alegando erro na comparação

if (qtdeParcelas == numParcela) {...

Ele não teria de armazenar em variáveis isso:

numParcela.intValue(); qtdeParcelas.intValue();
Pois a comparação do if com objetos, vai estar comparando posição de memória, e não valor do objetos (a não ser que seja Java 1.5).
De qualquer sorte, vai a dica.

Abraço!

cassio

[EDITADO] ignorar esta mensagem!

D

é 1.4

Como que eu posso arrumar isso amigo?

cassio

bland:
cassio,

Davi está alegando erro na comparação

if (qtdeParcelas == numParcela) {...

Ele não teria de armazenar em variáveis isso:

numParcela.intValue(); qtdeParcelas.intValue();
Pois a comparação do if com objetos, vai estar comparando posição de memória, e não valor do objetos (a não ser que seja Java 1.5).
De qualquer sorte, vai a dica.

Abraço!

aaaaiii droga
agora que eu vi que sào objetos e nao variaveis primitivas…
Acho que é isso mesmo… ehehehe

Abraço!

bland

Davi,

O seu erro é que você possui objetos wrapper do tipo Integer.
Você está chamando o método intValue() mas não está armazenando esse retorno em uma variável int.
Nesse caso, você está comparando objetos e não inteiros.
Assim, o Java interpreta que você quer saber se os objetos são iguais, então ele (o Java - JVM) compara se as posições de momeória das duas variáveis inteiras são iguais.
E como não são, ele nunca entra no seu if (na sua condição de comparação).

Para resolver, crie uma variável int. Assim:

int numeroDeParcela = numParcela.intValue(); int qtdDeParcelas = qtdeParcelas.intValue();
Aí, na sua condição de comparação você utiliza assim:

if ( numeroDeParcela == qtdDeParcelas ) { ...
Acho que com isso vai funcionar.
Abraço!

D

Consegui arrumar amigos :smiley:

Mudei para:

if (qtdeParcelas.intValue() == numParcela.intValue())

Valew pela força!

[]'s

Criado 18 de setembro de 2006
Ultima resposta 18 de set. de 2006
Respostas 8
Participantes 3