Ajuda com meu if

14 respostas
R

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);

14 Respostas

Jeanderson_Silva

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

mas e la no else? ficaria == null? pq se for não deu certo.

R

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

Jeanderson_Silva

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

R

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*";
                    }
R

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.

davidbuzatto

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!" );
}
R

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 :smile:

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:

String valor = null;
if(valor == null){
 //valor é null
}else{
 //o valor não é null
}
R

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);
D

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.

R

obrigado pelas dicas Douglas! irei adota-las.

Criado 1 de maio de 2017
Ultima resposta 3 de mai. de 2017
Respostas 14
Participantes 4