IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Comparer des entiers en tant que string


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Par défaut Comparer des entiers en tant que string
    salut tout le monde,

    j'essaie d'ajouter de faire une fonction pour trier les variable de type String, j'utilise donc la méthode toCompare qui renvoie une entier dont le signe dépend de la valeur unicode des chaines comparées d'après la javadoc. Jusque la tout est nickel, mais lorsque j'essaie de comparer des entiers en tant que string la fonction toCompare me renvoie du n'importe quoi.

    par exemple 4 en tant que string n'est pas supérieur à la String "2"?!! est ce normal ce résultat la?

    comment je peux comparer deux string qui peuvent contenir des caractères alphanumériques {A-Z}, {0,9}

    Merci d'avance pour votre aide, je sais que c'est simple mais c'a m'a pris une après midi entière de debuggage pour découvrir que c toCompare qui déconnait en comparant des nombres en tant que string

    merci pour votre aide

  2. #2
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut
    Salut,

    Je ne connais pas la fonction toCompare mais j'image qu'elle est faite grâce à une table ASCII (http://www.tableascii.com/)

    Si tu regardes bien, le nombre 4, vaut bien 4 en décimal.
    Mais le caractère 2 lui vaut 50 en décimal.
    Ce qui fait que "2" > 4 !

    Si tu veux de l'aide pour ta fonction, précise un peu ce que tu veux qu'elle fasse.
    Trier c'est bien mais selon quels critères ? Ordre Alphabétique, ordre croissant selon la somme des valeurs décimales des caractères...

    Tchao

  3. #3
    Modérateur
    Avatar de nouknouk
    Homme Profil pro
    Inscrit en
    Décembre 2006
    Messages
    1 655
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 655
    Par défaut
    Je ne connais pas la fonction toCompare mais j'image qu'elle est faite grâce à une table ASCII (http://www.tableascii.com/)
    Non: c'est fait grâce à la velur en Unicode, pas ASCII.
    Ceci dit, pour les caractères du Latin basique (dont font partie les chiffres qu'on connait), les codes ascii et unicode correpondent grosso modo.

    Citation Envoyé par Matt112 Voir le message
    Si tu regardes bien, le nombre 4, vaut bien 4 en décimal.
    Mais le caractère 2 lui vaut 50 en décimal.
    Ce qui fait que "2" > 4 !
    Non: en ascii, le caractère 2 est bien codé 50, mais le caractère 4 est codé 52.
    L'ordre est donc bien respecté !

  4. #4
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Par défaut
    Ah oui exact, au temps pour moi... d'autant plus que je donne le lien du tableau où c'est marqué :p
    Merci

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    885
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 885
    Par défaut
    Salut,

    String.compareTo fonctionne pourtant bien (comme c'est spécifié dans la javadoc, comparaison selon tri par ordre lexicographique, et 3 résultats possibles), non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "4".compareTo("3");
    // ou bien
    "tralala 4".compareTo("tralala 3")
    donne bien 1.

    L'opération dans le sens inverse renvoyant bien -1.

    Pourrais-tu détailler ton code ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 12
    Par défaut
    le problème en faite ne vient pas de mon code, je fait vraiment des testes bêtes koi: essayer

    "33".toCompare("4") ca donne -1 non?!

    apparemment les machines trient les string d'une façon qui donne des résultats qui diffèrent parfois de ce qu'on attend nous les humains. Fin j'ai trouvé sur le net des articles qui parlent du trie naturel "Natural order string comparaison" qui utlise le Collator Java.

    ce lien : http://www.javapractices.com/topic/T...tion.do?Id=207 traite bien ce sujet. Sauf que j'aimerai bien que si qlqn pourrait nous expliquer d'avantage les collator pour mieux cerner le trie des string en java.

Discussions similaires

  1. Variable interpretée en tant que string
    Par Woocher dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 20/03/2009, 09h09
  2. [Débutante]Balise HTML en tant que String
    Par bbyoulie dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 09/12/2008, 13h30
  3. [MySQL] comparer des entiers
    Par angeleweb dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 20/12/2007, 18h21
  4. Réponses: 1
    Dernier message: 14/10/2007, 20h15
  5. [débutant]obtenir un unsigned char en tant que String
    Par NorthernLights dans le forum C++
    Réponses: 2
    Dernier message: 03/02/2006, 10h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo