Como fazer uma comparação de Strings?

Eu uso o seguinte codigo para fazer uma comparação de numero de contas

public int compareTo(ContaPoupanca outra) {
if(this.getNumero() < outra.getNumero()){
return -1;
}
if(this.getNumero() > outra.getNumero()){
return 1;
}
return 0;
}

gostaria de saber como faço para mudar esse codigo para comparar Strings
desde de já agradeço


Bom em primeiro lugar quando colocar seu código você deve usar a tag correspondente ao mesmo, bem se você quiser comparar duas Strings você deve usar o método equals(), nesse caso ele retorna um booleano true se as strings forem iguais e false para caso contrário.
Segue o seu código modificado:

public int compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

Espero ter ajudado… :slight_smile:

Obrigado, pela atenção

e q eu preciso colocar meus objetos em ordem alfabetica
nesse metodo que eu postei ele colova em ordem numerica
mais preciso colocar em ordem alfabetica
c vc poder me ajudar

Obrigado mais uma vez

[quote=laudenpower]bem se você quiser comparar duas Strings você deve usar o método equals(), nesse caso ele retorna um booleano true se as strings forem iguais e false para caso contrário.
Segue o seu código modificado:

public int compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

[/quote]
Cara, isso aí nem compila. Que tal resolver com UMA linha de código?

public int compareTo(ContaPoupanca outra) {
  //levando em consideração que o número da conta seja do tipo string
  return String.CASE_INSENSITIVE_ORDER.compare(getNumero(), outra.getNumero());
} 

Aproveite seu código e modifique apenas em:

public int compareTo(ContaPoupanca outra) { if(this.getNumero().compareTo(outra.getNumero()) > 0){ return -1; } if(this.getNumero().compareTo(outra.getNumero()) < 0){ return 1; } return 0; }Funcionou?
Abraços.

Eduardo, deu certo do jeito que você me passou

Obrigado a todos

[quote=erdanielli][quote=laudenpower]bem se você quiser comparar duas Strings você deve usar o método equals(), nesse caso ele retorna um booleano true se as strings forem iguais e false para caso contrário.
Segue o seu código modificado:

public int compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

[/quote]
Cara, isso aí nem compila. Que tal resolver com UMA linha de código?

public int compareTo(ContaPoupanca outra) {
  //levando em consideração que o número da conta seja do tipo string
  return String.CASE_INSENSITIVE_ORDER.compare(getNumero(), outra.getNumero());
} 

[/quote]

Em primeiro lugar obrigado por me corrigir o código realmente apresenta um problema, nesse caso o retorno do método deve ser boolean também.

Segue abaixo o código correto…

public boolean compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

Bom na sua solução apesar de ser resolvido em uma linha, nem sempre o menor código é o código mais claro, sendo assim é melhor implementar a outra solução que o nosso colega proporcionou.

[quote=laudenpower][quote=erdanielli][quote=laudenpower]bem se você quiser comparar duas Strings você deve usar o método equals(), nesse caso ele retorna um booleano true se as strings forem iguais e false para caso contrário.
Segue o seu código modificado:

public int compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

[/quote]
Cara, isso aí nem compila. Que tal resolver com UMA linha de código?

public int compareTo(ContaPoupanca outra) {
  //levando em consideração que o número da conta seja do tipo string
  return String.CASE_INSENSITIVE_ORDER.compare(getNumero(), outra.getNumero());
} 

[/quote]

Em primeiro lugar obrigado por me corrigir o código realmente apresenta um problema, nesse caso o retorno do método deve ser boolean também.

Segue abaixo o código correto…

public boolean compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

Bom na sua solução apesar de ser resolvido em uma linha, nem sempre o menor código é o código mais claro, sendo assim é melhor implementar a outra solução que o nosso colega proporcionou.
[/quote]
O compareTo deve SEMPRE retornar um int.
Uma implemantação bem simples, sem if’s nem nada disso:

public int compareTo(ContaPoupanca outra) { 
     return this.getNumero().compareTo(outra.getNumero()); 
} 

[quote=marcobiscaro2112][quote=laudenpower][quote=erdanielli][quote=laudenpower]bem se você quiser comparar duas Strings você deve usar o método equals(), nesse caso ele retorna um booleano true se as strings forem iguais e false para caso contrário.
Segue o seu código modificado:

public int compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

[/quote]
Cara, isso aí nem compila. Que tal resolver com UMA linha de código?

public int compareTo(ContaPoupanca outra) {
  //levando em consideração que o número da conta seja do tipo string
  return String.CASE_INSENSITIVE_ORDER.compare(getNumero(), outra.getNumero());
} 

[/quote]

Em primeiro lugar obrigado por me corrigir o código realmente apresenta um problema, nesse caso o retorno do método deve ser boolean também.

Segue abaixo o código correto…

public boolean compareTo(ContaPoupanca outra) { 
    if(this.getNumero().equals(outra.getNumero())){//levando em consideração que o número da conta seja do tipo string 
        return true; 
    } 
    return false;
} 

Bom na sua solução apesar de ser resolvido em uma linha, nem sempre o menor código é o código mais claro, sendo assim é melhor implementar a outra solução que o nosso colega proporcionou.
[/quote]
O compareTo deve SEMPRE retornar um int.
Uma implemantação bem simples, sem if’s nem nada disso:

public int compareTo(ContaPoupanca outra) { return this.getNumero().compareTo(outra.getNumero()); } [/quote]

Foi mal… não tinha notado que nesse caso está se fazendo uma sobreescrita…