Boa tarde pessoal!
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?
String tipoteste = "";
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*";
} else if (CadTPEEspecMax1.getText()==null) {
tipoteste = "Min. " + CadTPEEspecMIN1.getText() + " " + CadTPEUNID1.getText() + " " + "referência*";
}
} else if (CadTPEEspecMIN1.getText()== null) {
tipoteste = "Max. " + CadTPEEspecMax1.getText() + " " + CadTPEUNID1.getText() + " " + "referência*";
}
} else if (CadTPEReferencia1.getSelectedItem() == "Não") {
if (CadTPEEspecMIN1.getText()!=null) {
if (CadTPEEspecMax1.getText()!=null) {
tipoteste = CadTPEEspecMIN1.getText() + " à " + CadTPEEspecMax1.getText() + " " + CadTPEUNID1.getText();
} else if (CadTPEEspecMax1.getText() == null) {
tipoteste = "Min. " + CadTPEEspecMIN1.getText() + " " + CadTPEUNID1.getText();
}
} else if (CadTPEEspecMIN1.getText() == null) {
tipoteste = "Max. " + CadTPEEspecMax1.getText() + " " + CadTPEUNID1.getText();
}
}
} else if (CadTPETipoteste.getSelectedItem() == "Não") {
if (CadTPEReferencia1.getSelectedItem() == "Sim") {
tipoteste = CadTPEEspecTexto1.getText() + " " + "referência*";
} else if (CadTPEReferencia1.getSelectedItem() == "Não") {
tipoteste = CadTPEEspecTexto1.getText();
}
}
pst.setString(18, tipoteste);
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)
mas e la no else? ficaria == null? pq se for não deu certo.
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*”;”
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
um exemplo:
if (CadTPEEspecMIN1.getText() == null) {
} else if (CadTPEEspecMIN1.getText() == null) {
}
Veja que o seu if tem a mesma condição do else, ou seja tá errado
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.
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*";
} else if (CadTPEEspecMax1.getText()==null) {
tipoteste = "Min. " + CadTPEEspecMIN1.getText() + " " + CadTPEUNID1.getText() + " " + "referência*";
}
} else if (CadTPEEspecMIN1.getText()== null) {
tipoteste = "Max. " + CadTPEEspecMax1.getText() + " " + CadTPEUNID1.getText() + " " + "referência*";
}
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.
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().
String a = "foo";
if ( a.equals( "bar" ) ) {
System.out.println( "'a' não é bar..." );
} else {
System.out.println( "'a' é bar!" );
}
1 curtida
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!!
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:
String valor = null;
if(valor == null){
//valor é null
}else{
//o valor não é null
}
Bom dia pessoal!
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.
String tipoteste = "";
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);
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.
1 curtida
obrigado pelas dicas Douglas! irei adota-las.