[Java] Comparar strings

sky312

Power Member
Boas eu tou a tentar comparar duas strings so que da o mesmo resultado são diferentes, qual é o meu erro?

Código:
public class Exercicio15 {
 
public static void main(String[] args) {
// TODO Auto-generated method stub
String a, b;
 
System.out.println("Insira a 1º palavra:");
a=Keyboard.readString();
System.out.println("Insira a 2º palavra:");
b=Keyboard.readString();
 
if (a==b){
System.out.println("As palavras são iguais." );
}
else {
System.out.println("As palavras são diferentes.");
}
 
 
}
 
}

desculpem por ñ por isto mais ordenado mas ñ sei como por o codigo numa caixa como esta nos outros posts
 
Última edição pelo moderador:
As strings em Java não são tipos básicos, por isso não podes comparar directamente com o ==, tens que usar funçoes. A classe String já tem a funçao compareTo definida.

if(a.compareTo(b))
...
else
...
 
Boas, explora a API do Java..

Aquilo que pretendes encontra-se neste link, nomeadamente, a função compareTo(String anotherString).

Ou seja:

Código:
if (a.compareTo(b)==0){
System.out.println("As palavras são iguais." );
}
else {
System.out.println("As palavras são diferentes.");
}
 
As strings em Java não são tipos básicos, por isso não podes comparar directamente com o ==, tens que usar funçoes. A classe String já tem a funçao compareTo definida.

if(a.compareTo(b))
...
else
...

Em situações em que apenas se pretende verificar a igualdade é mais simples e comum usar o equals.
if(s1.equals(s2))...
 
tentei fazer o que disseste mas aparece um erro diz (cannot convert from int to boolean)
Isso foi porque usaste o código:
Código:
if (s1.compareTo(s2))
Ora o método compareTo devolve um int, é semelhante ao strcmp() de C. Mas enquanto que no C, podemos usar o valor devolvido pelo strcmp() como parâmetro do if, funcionando como um booleano (que não existem em C), em Java tal não é possível, pois existe mesmo definido o tipo primitivo boolean (em C, só fazendo #include<stdbool.h>).
 
Back
Topo