[RESOLVIDO]Condição de negação IF

13 respostas
Ace

Galera duvida BASICA!
quero que se tiver um produto cujo tipo = CD ele não entre no IF de desconto
alguem poderia me ajudar?

if(this.cesta.getProdutos().get(i).getProduto().getTipo().equals("CD")){	

}
//if de desconto
else	if ((conta_descontos <= conta_preco_normal) &&
         	(this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
		this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))) {
             
        // aqui vem a logica de desconto
     }

13 Respostas

BrunoFurtado

Se o tipo de produto for diferente (!) da String “CD”… faço algo…

if(!this.cesta.getProdutos().get(i).getProduto().getTipo().equals("CD")) {
     // logica
}
Ace

Esqueci soh de colocar a negação(!) aqui no post, mas desse jeito não rolou não sei o pq

if(!this.cesta.getProdutos().get(i).getProduto().getTipo().equals("CD")){

//aqui dentro não vem nada só quero q verifique se é CD

			}
	else if ((conta_descontos <= conta_preco_normal) &&
			(this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
			this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))) {
}

mais alguma ideia?

Juliano_Pedroso_da_S

Mas se qualquer objeto inclusive a lista estiver nula vai ganhar um null pointer ....

//if de desconto  
if (!this.cesta.getProdutos().get(i).getProduto().getTipo().equals(&quot;CD&quot;) && (conta_descontos &lt;= conta_preco_normal) &&  
            (this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals(&quot;INFANTIL&quot;) ||  
        this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals(&quot;INFANTO JUVENIL&quot;))) {  
               
        // aqui vem a logica de desconto  
     }
Ace

sodrope,
já havia testado sua condição, e mesmo assim ele cai na logica de desconto, caso haja um CD em minha cesta =z

renanreismartins

amigo deixar um if ou else sem nada dentro é um Gambi Pattern

http://desciclopedia.ws/wiki/Gambi_Design_Patterns#Else_Forever

if(!this.cesta.getProdutos().get(i).getProduto().getTipo().equals("CD")){  
  
//aqui dentro não vem nada só quero q verifique se é CD

// ELSE FOREVER DETECTADO  
  
            }  
    else if ((conta_descontos <= conta_preco_normal) &&  
            (this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||  
            this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))) {  
}

como o amigo sodrope disse, vc pode resolver isso de forma mais elegante, sem contar que vc tem um “encarrilhamento” ai

uma das formas de melhorar seria:

produto.comparaGenero("INFANTIL");

abrasssss

Ace

Pessoal eu de novo…

renanreismartins, li referente ao gambi pattern, onde não fazer nada tbm é uma ação.
mas ainda não está rolando isso aqui tah de rosca…! =/

não gosto de ficar enchendo o saco da galera aqui, mas dentro dos meu limites tentei de tudo!

alguem pode me dar aquela força master?

diego.sas

Testa assim!!!

String tipoProduto = this.cesta.getProdutos().get(i).getProduto().getTipo();
		if((tipoProduto != null) && (!tipoProduto.equalsIgnoreCase("CD"))){       
			  // Logica
		}   
		//if de desconto   
		else    if ((conta_descontos <= conta_preco_normal) &&   
		            (this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||   
		        this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))) {   
		               
		        // aqui vem a logica de desconto   
		     }  
	}

Flw

Ace

diego.sas vlw pela resposta,

for (int j = 0; j < this.cesta.getProdutos().size() ; j++) {
	
	 String tipoProduto = this.cesta.getProdutos().get(j).getProduto().getTipo();
		if( (tipoProduto != null) && (!tipoProduto.equalsIgnoreCase("CD")) ){
	
	//AQUI SETO O VALOR NORMAL
        valor = this.cesta.getProdutos().get(j).getProduto().getPreco();
	this.cesta.getProdutos().get(j).setPrecoVenda(valor);
	this.cesta.getProdutos().get(j).setTotProduto(this.cesta.getProdutos().get(j).getPrecoVenda() * this.cesta.getProdutos().get(j).getQuantidade());
 }
 else if ((conta_descontos <= conta_preco_normal) &&
           (this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
           this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))
){
	//AQUI SETO O VALOR COM DESCONTO
       valor = this.cesta.getProdutos().get(j).getProduto().getPreco() - (this.cesta.getProdutos().get(j).getProduto().getPreco() * desconto );
	this.cesta.getProdutos().get(j).setPrecoVenda(valor);
	this.cesta.getProdutos().get(j).setTotProduto(this.cesta.getProdutos().get(j).getPrecoVenda() * this.cesta.getProdutos().get(j).getQuantidade());

}
	
	
				}

Agora ele não entra o valor com desconto caso haja qualquer produto != de CD… =/ osso!

Ace

tentei da seguinte maneira tbm

String tipoProduto = this.cesta.getProdutos().get(j).getProduto().getTipo();

	if( (tipoProduto != null) && (!tipoProduto.equalsIgnoreCase("CD")) ){
					
		if ((conta_descontos <= conta_preco_normal) &&
		 	(this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
			this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))
		){
                                                //LOGICA DE DESCONTO
					}


				}

sem sucesso!

Ace

Bom galera não queria fazer isso colocar o metodo inteiro aqui para não ficar chato a leitura, mas ele até esse momento funfa direto, quero que isso tudo aconteça se for diferente de CD somente isso…
Estou qse jogando a toalha.

public void aplicaDesconto(){

//variavel para contar os produtos na cesta.
int conta_descontos = 0;
int conta_preco_normal = 0;
double desconto = 0.4;

/*
 *  conta a quantidade de itens comprados, e compara se existe uma publicacao diferente de infantil/infanto juvenil
 *  para cada publicacao infantil/infanto juvenil.
*/
for (int i = 0; i < this.cesta.getProdutos().size(); i++) {
	if(this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
	this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL")){
		conta_descontos ++;
	}else{
		conta_preco_normal ++;
		}
	}

System.out.println("################### Produto com Desconto  : " + conta_descontos + " Produto sem Desconto: " + conta_preco_normal);

// variavel para desconto
double valor = 0.0;

//varre a cesta de produtos
for (int j = 0; j < this.cesta.getProdutos().size() ; j++) {

//condição de 1 para 1, caso tenha um produto na cesta != infantil || infanto juvenil, concede o desconto em um ou outro.
     if ((conta_descontos <= conta_preco_normal) &&
	(this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
	this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))
	){
	//logica desconto de 40%
	valor = this.cesta.getProdutos().get(j).getProduto().getPreco() - (this.cesta.getProdutos().get(j).getProduto().getPreco() * desconto );
	this.cesta.getProdutos().get(j).setPrecoVenda(valor);
	this.cesta.getProdutos().get(j).setTotProduto(this.cesta.getProdutos().get(j).getPrecoVenda() * this.cesta.getProdutos().get(j).getQuantidade());
				
           }

	}
}
lina

Oi,

Provavelmente o método não esta retornando nada parecido com "CD".

if (this.cesta != null && this.cesta.getProdutos() != null && this.cesta.getProdutos().get(i) != null && this.cesta.getProdutos().get(i).getProduto() != null) {

   String
   ls_tipo = null;
System.out.println("O que será que esta retornando ? "+this.cesta.getProdutos().get(i).getProduto().getTipo());
   if ((ls_tipo = this.cesta.getProdutos().get(i).getProduto().getTipo()) != null) {

         if (!"CD".equalsIgnoreCase(ls_tipo)) {

         }

         else if ((conta_descontos <= conta_preco_normal) &&
			(this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
			this.cesta.getProdutos().get(i).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))) {
         }
   }
}
else {

System.out.println("Algo de errado não esta certo");

}

Mesmo assim verifique a sua lógica. De uma olhada na quantidade de condições que fui obrigada a fazer para evitar NullPointerException.

Tchauzin!

M

Pergunta primeiro se o cara não é null e depois se ele !equals("CD");
o ! é a mesma coisa que not, tipo:

public boolean teste(){
if((1+2) == 3){
return true;
}
return false;
}




if(!teste){
//imprime mensagem
}

eu usei o ! para condição, se 1+2 = 3 for falso, entra no IF... deu pra ajudar?

Ace

Pessoal muito obrigado a ajuda de todos, mas fritei o cerebro aqui e rolou finalmente.

Acrescentei um contator tbm para o tipo = “CD”

int conta_CD = 0;

else if(this.cesta.getProdutos().get(i).getProduto().getTipo().trim().toUpperCase().equals("CD")){
	conta_CD ++;
}

E no outro if de validação, acrescentei o validador, comparando ele com o produto de preço normal, para que não me de problema se caso já tiver um tipo “CD” ele pule a logica, dessa forma continuo a fazer a contagem de 1 para 1.

if ((conta_descontos <= conta_preco_normal) && (conta_CD <= conta_preco_normal) &&
	(this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTIL") ||
	this.cesta.getProdutos().get(j).getProduto().getGenero().trim().toUpperCase().equals("INFANTO JUVENIL"))
			){

// logica de desconto
}

muito obrigado a todos pela paciencia…

Att,

Criado 24 de janeiro de 2012
Ultima resposta 31 de jan. de 2012
Respostas 13
Participantes 7