Porque essa comparação sempre dá false?

4 respostas
jubei

a comparação das variáveis a e x sempre dá false.

package inverte;

import javax.swing.JOptionPane;


class Inverte{
       String InverteFrase(String x){
    
    String invertida="";
    
    
    for (int i =x.length()-1;i>=0; i--){
      invertida += (x.charAt(i));
    }
    return invertida;
}
  }
/**
 *
 * @author pessoal
 */

public class Main {

   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
     
Inverte funcao = new Inverte();
 
String x, a = JOptionPane.showInputDialog("Texto para entrar com teclado String");
x = funcao.InverteFrase(a);

System.out.println(a);

 if (a == x){
    System.out.println("esta palavra é um palindromo");
} 
else{
    System.out.println("esta palavra não é um palindromo");        
}

System.out.println(x);
    }
}

4 Respostas

renzonuccitelli

Use o método equals em vez de ==.

Use

if(x.equals(a))
renzonuccitelli

Isso se sua função de inverter estiver funcionando, ou seja, imprima x e a para saber se estão imprimindo a mesma coisa.

wariows

Para tipos não primitivos (a String está incluida nisso), o java não sobrecarrega o operador ‘==’. Tudo em java é referência, então o operador ‘==’ serve para comparar instâncias, ou seja… só dará verdadeiro quando for a mesma instância (exceto para tipos primitivos).

Para comparar Strings, utilize o método equals como o renzonuccitelli falou!

[]'s

ViniGodoy

Dá uma olhada:
http://www.guj.com.br/posts/list/96672.java#519330

Criado 22 de setembro de 2008
Ultima resposta 22 de set. de 2008
Respostas 4
Participantes 4