Note que o if está dentro de um laço.
Vc tem certeza que em nenhuma iteração do laço é true?
fabinhofbn
O Atributo em isBoolGaiola é false. Certeza Absoluta?
Como o fabiofalci citou, também é possivel acontecer. A melhor coisa a se fazer nesse caso é debugar, pois assim você irá ver o que existe dentro de suas listas, as vezes é erro na hora da inserção dos dados na lista, talvez a falta de um new e assim por diante. Debuga e vc vai ver que não é erro de if não.
rogelgarcia
Se existisse um erro de if no java… eu jogava tudo que eu sei fora… e ia plantar batata ehhehehe
D
douglastc
Uma coisa que eu aprendi é que a chance de vc estar errado é muito superior do Java estar errado, em todas as que eu achei que o Java estivesse errado acabou que o errado era eu. Quando for assim manda imprimir o valor do que está dentro do if e coloca fora dele, aí vc vai ver o pq dele estar entrando e em qual situação.
allyssonluan
Deve ser por causa do seu For.
No comments!
galileu.gt
Se existisse um erro de if no java… eu jogava tudo que eu sei fora… e ia plantar batata ehhehehe [2]
peczenyj
Use um debugger ou use PPADD - Passei Por Aqui Driven Development - para mostrar o suposto BUG do if
publicboolretornaFalse(){
System.out.println("vou retornar false....");
}
if(retornaFalse()){
System.out.println("ah perfeito");
}else{
System.out.println("OPA! BUG NO IF MINHA GENTE!!");
}
D
Damiao_Cunha
CONCORDO PELNAMENTE COM VC…
coloca pra escrever o valor da operação antes desse if…
vlw
lcn.andre
O problema de sistemas grandes é que cada um faz uma coisa e às vezes alguém foge do padrão. O padrão nesse caso é que as listas são sempre do tipo List, mas alguém aqui definiu “getEstoqueEmpresaProdutos()” como Collection. O problema estava na iteração mesmo. Mudei para isto e funcionou:
for (int i=0; i<lista.size(); i++) {
OperacaoItem item = (OperacaoItem) lista.get(i);
Iterator<EstoqueEmpresaProduto> estoques = item.getProduto().getEstoqueEmpresaProdutos().iterator();
// Pinta de azul
while (estoques.hasNext()) {
EstoqueEmpresaProduto eep = estoques.next();
if (eep.isBoolGaiola() && eep.equals(item.getEstoqueEmpresaProduto())) {
linhasAzuis.add(i);
break;
}
}
}
Agora a pergunta: quando eu estava fazendo o debug a iteração com smart for acontecia normalmente, os valores retornavam corretamente também. Tanto que disse que tinha certeza absoluta que estava retornando falso, mas mesmo assim quando passava do if, ele entrava no bloco. O que uma coisa tem a ver com outra?
E
entanglement
WTF? Provavelmente seu problema não era o for ou o iterator (visto que um foreach é transformado pelo compilador para o Iterator que você mostrou no seu código - não importa se é um Collection ou um List). Seu problema provavelmente era o if, que carecia de uma condição:
// Código antigo - provavelmente bugadoif(eep.isBoolGaiola()){