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 descontoelseif((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}
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}elseif((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("CD")&&(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("INFANTOJUVENIL"))){// 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
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 }elseif((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!!!
StringtipoProduto=this.cesta.getProdutos().get(i).getProduto().getTipo();if((tipoProduto!=null)&&(!tipoProduto.equalsIgnoreCase("CD"))){// Logica}//if de desconto elseif((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(intj=0;j<this.cesta.getProdutos().size();j++){StringtipoProduto=this.cesta.getProdutos().get(j).getProduto().getTipo();if((tipoProduto!=null)&&(!tipoProduto.equalsIgnoreCase("CD"))){//AQUI SETO O VALOR NORMALvalor=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());}elseif((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 DESCONTOvalor=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
StringtipoProduto=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, SÓ quero que isso tudo aconteça se for diferente de CD somente isso…
Estou qse jogando a toalha.
publicvoidaplicaDesconto(){//variavel para contar os produtos na cesta.intconta_descontos=0;intconta_preco_normal=0;doubledesconto=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(inti=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 descontodoublevalor=0.0;//varre a cesta de produtosfor(intj=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
MatheusFalcade
Pergunta primeiro se o cara não é null e depois se ele !equals("CD");
o ! é a mesma coisa que not, tipo:
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}