Como fazer uma comparação de Strings?

9 respostas
ma.pops

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

9 Respostas

nextuser


laudenpower

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:

ma.pops

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

erdanielli

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


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());
}
eduardoac

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.

ma.pops

Eduardo, deu certo do jeito que você me passou

Obrigado a todos

laudenpower

erdanielli:
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;
}


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

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.

M

laudenpower:
erdanielli:
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;
}


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

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.


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()); 
}
laudenpower

marcobiscaro2112:
laudenpower:
erdanielli:
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;
}


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

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.


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

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

Criado 1 de março de 2009
Ultima resposta 1 de mar. de 2009
Respostas 9
Participantes 6