Não entra no IF

10 respostas
francisco.lara

Boa Tarde!

Tenho o seguinte trecho de codigo..

while (linha_queries != null) {

                InputStream islabels = new FileInputStream(arquivo2);
                InputStreamReader isrlabels = new InputStreamReader(islabels);
                BufferedReader brlabels = new BufferedReader(isrlabels);
                String linha_labels = brlabels.readLine(); //primeira linha do arquivo 2

                String l1 = (Normalizer.normalize(linha_queries, Normalizer.Form.NFKD).replaceAll("[^\\p{ASCII}]", ""));
                String l2 = (Normalizer.normalize(linha_labels, Normalizer.Form.NFKD).replaceAll("[^\\p{ASCII}]", ""));

                while ((linha_labels != null) && (l1.equalsIgnoreCase(l2) != true)) {

                    linha_labels = brlabels.readLine();
                    l1 = (Normalizer.normalize(linha_queries, Normalizer.Form.NFKD).replaceAll("[^\\p{ASCII}]", ""));
                    l2 = (Normalizer.normalize(linha_labels, Normalizer.Form.NFKD).replaceAll("[^\\p{ASCII}]", ""));

                }


                if (linha_labels == null) {
                  .....

               }
 
            .....
        }

      ......

A ideia e quando o linha_labels der null ele entra no if, mas o linha_labels está dando null e mesmo assim ele não entra, simplismente da null e o algoritmo para de rodar!
Alguém sabe oque está acontecendo?

Obrigado

10 Respostas

Rodrigo_Sasaki

cara, um if é um if… se linha_labels for null, ele vai entrar, podem estar ocorrendo 2 casos:

1 - o if nunca é executado, a execução é interrompida antes.
2 - linha_labels não está nulo.

Michel_M

Tenta usar:

ob.equals(ob2)
Rodrigo_Sasaki

só uma observação, eu vi que você repete muitas vezes o código que eu creio que é pra remover acentuação das palavras.

Por que você não faz um método pra isso? Fica muito mais limpo.

francisco.lara

digaoneves:
cara, um if é um if… se linha_labels for null, ele vai entrar, podem estar ocorrendo 2 casos:

1 - o if nunca é executado, a execução é interrompida antes.
2 - linha_labels não está nulo.

  1. O if está sendo executado porque ele está entrando no Else no if(linha_labels == null)

  2. linha label está ficando null, mas quando fica o algoritmo para, nem lê um Sysm.out.println que coloquei antes do if(linha_labels == null) para fazer teste.

francisco.lara

[quote=Michel M]Tenta usar:

ob.equals(ob2)

Michel M, tem que ser “equalsIgnoreCase” porque estou ignorando palavras maiúsculas e minúsculas…

francisco.lara

digaoneves:
só uma observação, eu vi que você repete muitas vezes o código que eu creio que é pra remover acentuação das palavras.

Por que você não faz um método pra isso? Fica muito mais limpo.

Até esqueci de tirar esse codigo de retirar acentos, ele não está funcionando…

Michel_M

[quote=francisco.lara]

Michel M:
Tenta usar:

ob.equals(ob2)

Michel M, tem que ser “equalsIgnoreCase” porque estou ignorando palavras maiúsculas e minúsculas…

Tá mas vc não esta comparando com null???.. pq vc quer usar “equalsIgnoreCase”?

Rodrigo_Sasaki

você colocou um breakpoint pra ter certeza de que está nulo? ou mandou imprimir?

francisco.lara

Obrigado a todos pelas postagens!
Consegui resolver!

digaoneves, eu disse que iria tirar o Normalizer, pois é, depois que tirei ele funcionou!!

while (linha_queries != null) {

                InputStream islabels = new FileInputStream(arquivo2);
                InputStreamReader isrlabels = new InputStreamReader(islabels);
                BufferedReader brlabels = new BufferedReader(isrlabels);
                String linha_labels = brlabels.readLine(); //primeira linha do arquivo 2


                while ((linha_labels != null) && (linha_queries.equalsIgnoreCase(linha_labels) != true)) {


                    System.out.println(linha_queries);
                    System.out.println(linha_labels);
                    System.out.println(linha_queries.equalsIgnoreCase(linha_labels));


                    linha_labels = brlabels.readLine();

                }
                System.out.println("+" + linha_labels);

                if (linha_labels == null) {
lina
francisco.lara:
Obrigado a todos pelas postagens! Consegui resolver!

digaoneves, eu disse que iria tirar o Normalizer, pois é, depois que tirei ele funcionou!!

while (linha_queries != null) {

                InputStream islabels = new FileInputStream(arquivo2);
                InputStreamReader isrlabels = new InputStreamReader(islabels);
                BufferedReader brlabels = new BufferedReader(isrlabels);
                String linha_labels = brlabels.readLine(); //primeira linha do arquivo 2


                while ((linha_labels != null) && (linha_queries.equalsIgnoreCase(linha_labels) != true)) {


                    System.out.println(linha_queries);
                    System.out.println(linha_labels);
                    System.out.println(linha_queries.equalsIgnoreCase(linha_labels));


                    linha_labels = brlabels.readLine();

                }
                System.out.println("+" + linha_labels);

                if (linha_labels == null) {

Oi,

Você está errado. O Normalizer não era o problema. Em seu primeiro exemplo, você esqueceu de acrescentar a linha linha_labels = brlabels.readLine(); dentro do segundo while ...

Logo, o linha_labels nunca seria NULL até porque ele foi instanciado antes do while() e após isso seu valor nunca foi alterado.

Tchauzin!

Criado 17 de maio de 2012
Ultima resposta 17 de mai. de 2012
Respostas 10
Participantes 4