criei esse if para me retornar um valor caso o campo da linha 3 e da 4 estejam vazios, mas não esta funcionando.
caso o campo CadTPEEspecMIN1 estiver null, ele efetua o else da linha 10. não sei oq está acontecendo, será que alguém possa me ajuda?
Stringtipoteste="";if(CadTPETipoteste.getSelectedItem()=="Sim"){if(CadTPEReferencia1.getSelectedItem()=="Sim"){if(CadTPEEspecMIN1.getText()==null){if(CadTPEEspecMax1.getText()==null){tipoteste=CadTPEEspecMIN1.getText()+" à "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText()+" "+"referência*";}elseif(CadTPEEspecMax1.getText()==null){tipoteste="Min. "+CadTPEEspecMIN1.getText()+" "+CadTPEUNID1.getText()+" "+"referência*";}}elseif(CadTPEEspecMIN1.getText()==null){tipoteste="Max. "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText()+" "+"referência*";}}elseif(CadTPEReferencia1.getSelectedItem()=="Não"){if(CadTPEEspecMIN1.getText()!=null){if(CadTPEEspecMax1.getText()!=null){tipoteste=CadTPEEspecMIN1.getText()+" à "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText();}elseif(CadTPEEspecMax1.getText()==null){tipoteste="Min. "+CadTPEEspecMIN1.getText()+" "+CadTPEUNID1.getText();}}elseif(CadTPEEspecMIN1.getText()==null){tipoteste="Max. "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText();}}}elseif(CadTPETipoteste.getSelectedItem()=="Não"){if(CadTPEReferencia1.getSelectedItem()=="Sim"){tipoteste=CadTPEEspecTexto1.getText()+" "+"referência*";}elseif(CadTPEReferencia1.getSelectedItem()=="Não"){tipoteste=CadTPEEspecTexto1.getText();}}
Bom mano, como o code não mostra a linha, eu não sei qual linha 10 vc ta falando, mas olhando seu if exemplo:
ele não vai passar para o else quando for null, vc ta dizendo assim: Se CadTPEEspecMIN1 é igual a null
para caso ele seja o null, e então seja executado o else, ele teria que ser:
if(CadTPEEspecMIN1.getText()!=null)
R
Rafael16
mas e la no else? ficaria == null? pq se for não deu certo.
R
Rafael16
quando fiz isso ele me retornou “10 à referência*” então quer dizer q ele leu o if, passou pelo if sendo q preenchi apenas um campo e me deu o resultado da linha 6 “tipoteste = CadTPEEspecMIN1.getText() + " à " + CadTPEEspecMax1.getText() + " " + CadTPEUNID1.getText() + " " + “referência*”;”
Jeanderson_Silva
mano, acho q vc tem q rever toda a lógica de seus ifs, pois tem if e else com as mesmas condições e são muitos if para a gente analisar sem saber como o sistema todo vai funcionar
Veja que o seu if tem a mesma condição do else, ou seja tá errado
R
Rafael16
esse é o if importante. o outro é ele negando a primeira condição.
o if é basicamente se ele tiver um campo vazio, ele me retorna o valor do outro campo e se o outro campo estiver vazio, ele me retorna o outro campo c as especificação abaixo.
essa é minha duvida… pq a logica do negocio é se um campo é diferente de null, quer dizer q o outro tem conteudo, então… ele me retorna o valor.
davidbuzatto1 like
Caros, o mais importante, independente do algoritmo estar certo ou errado, é a comparação de strings. Não se deve usar o operador relacional igual à (==) para lidar com comparação de Strings, mas sim o método equals().
Stringa="foo";if(a.equals("bar")){
System.out.println("'a' não é bar...");
}else{
System.out.println("'a' é bar!");
}
R
Rafael16
boa tarde David, blz? mas como ficaria em meu if? fiquei um pouco confuso… sou novo na programação… você poderia me ajudar por favor? Desde já agradeço!!
Jeanderson_Silva
Bem lembrado david
Jeanderson_Silva
Mano, no caso, vc tem q rever a lógica! pois o else if é utilizado para dar outra condição, mas como no caso é só verificar se é null, era usar o else apenas ex:
Revisei e alterei meu if e consegui arrumar.
fiz de uma maneira mais facil e criei mais 2 opções no combobox.
segue o código pra caso alguém precise um dia.
Stringtipoteste="";if(CadTPETipoteste.getSelectedItem()=="Min e Max"){if(CadTPEReferencia1.getSelectedItem()=="Sim"){tipoteste=CadTPEEspecMIN1.getText()+" à "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText()+" "+"referência*";}else{tipoteste=CadTPEEspecMIN1.getText()+" à "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText();}}else{if(CadTPETipoteste.getSelectedItem()=="Texto"){if(CadTPEReferencia1.getSelectedItem()=="Sim"){tipoteste=CadTPEEspecTexto1.getText()+" "+"referência*";}else{tipoteste=CadTPEEspecTexto1.getText();}}if(CadTPETipoteste.getSelectedItem()=="No Max"){if(CadTPEReferencia1.getSelectedItem()=="Sim"){tipoteste="Max. "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText()+"referência*";}else{tipoteste="Max. "+CadTPEEspecMax1.getText()+" "+CadTPEUNID1.getText();}}if(CadTPETipoteste.getSelectedItem()=="No Min"){if(CadTPEReferencia1.getSelectedItem()=="Sim"){tipoteste="Min. "+CadTPEEspecMIN1.getText()+" "+CadTPEUNID1.getText()+"referência*";}else{tipoteste="Min. "+CadTPEEspecMIN1.getText()+" "+CadTPEUNID1.getText();}}}
pst.setString(18,tipoteste);
D
Douglas-Silva1 like
Seu código ainda tem problemas, o principal é que você não está usando “.equals()” para comparar Strings:
if (CadTPETipoteste.getSelectedItem() == "Min e Max") {
deveria ser:
if (CadTPETipoteste.getSelectedItem().equals("Min e Max")) {
E o mesmo para as outras comparações com Strings.
Além disso, esse método está muito grande com muito if-else nele, isso torna o código mais difícil de entender e de alterar no futuro, procure, pelo menos, dividí-lo em mais métodos. E o nome de suas variáveis está claro? O que é “CadTPETipoteste”? As outras pessoas envolvidas saberão o que é isso ou terão que te perguntar? Faça nomes claros pra todo mundo que poderá vir a ter que mexer no seu código depois poder entendê-lo.