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

avec Java Discussion :

Comparaison int et char


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut Comparaison int et char
    j'ai deux tableaux :
    int tab1[12][8];

    char tab2[12][8];

    ils contiennent des 0 et des1, mais les uns sont des char et les autres des int, c'est la suite de mes questions précédentes conversion entier en binaire, (message directement précédent),
    je n'arrive absolument pas à les comparer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(tab1[i][j]==tab2[i][j])
    donne des résultats aberrants,
    sauriez vous m'aider?

    merci

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2009
    Messages
    130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 130
    Par défaut
    Essaye :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab1[i][j]==Integer.valueOf(tab2[i][j]))

  3. #3
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Comme la valeur des caratères numériques suit le même ordre (0 48, 1 49, 2 50, etc.), il suffit de rentrancher '0' au char pour obtenir la valeur correspondant au chiffre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int tab1[12][8];
    char tab2[12][8];
     
    if(tab1[i][j] == (tab2[i][j] - '0')) {
        ...
    }
    C'est problablement un peu plus performant que la méthode d'Aldian mais par contre un peu moins "propre".

    [EDIT]Notez que c'est à la valeur du tableau de char que l'on retranche '0' pas à la valeur du tableau d'entier.
    Le code pourrait être décomposé comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int tab1[12][8];
    char tab2[12][8];
     
    int intValue = tab1[i][j];
    char charValue = tab2[i][j];
    int charToIntValue = charValue - '0';
    if(intValue == charToIntValue) {
        ...
    }
    [/EDIT]
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Bref, attention à ne pas confondre le caractère '0' et le nombre 0. Ce sont deux choses différentes.
    Par exemple, un caractère peut être la lettre 'm' ou le symbole '%'. Un nombre ne le peut pas.
    Un nombre peut être le nombre 130. Un caractère ne le peut pas, il n'y a que des chiffres, et on ne peut pas représenter 130 en un seul chiffre.

    Conclusion : l'un et l'autre n'ont absolument rien à voir.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Par défaut
    Par contre je me demande si philippe6 a vraiment utilisé des char parce qu'il manipulait des chaines de caractères. Ça peut aussi venir d'une habitude qu'on les développeurs C d'utiliser des char pour stocker des entiers non signés compris entre 0 et 255, afin de n'utiliser qu'un seul octet et non 4 pour les int...

    Faudrait voir comment a été initialisé le tableau de char..
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    Migouw et Aldian, tous les contenus sont différents meme si j'ai deux 1 ou deux 0, avec mes tentatives (nombreuses), j'obtenais la même incohérence,
    le y@ams, c'est bizarre si je test l'égalité, je peux compiler mais je n'ai pas satisfaction à l'exexution, si je teste la différence (!=), j'ai incompatible types à la compile

  7. #7
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    le y@ams, quand je dis je n'ai pas satisfaction, je veux dire qu'il ne trouve pas les égalités

  8. #8
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par philippe6 Voir le message
    le y@ams, c'est bizarre si je test l'égalité, je peux compiler mais je n'ai pas satisfaction à l'exexution, si je teste la différence (!=), j'ai incompatible types à la compile
    Oui c'est très bizarre, j'ai testé de mon coté et ça marche très bien. Peux tu poster ton code exact ?
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  9. #9
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Par défaut
    J'ai fait le test suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    public class CharIntComp {
     
    	public static void test1(){
    		char c = 1;
    		int	i = 1;
    		if(i==Character.getNumericValue(c))
    			System.out.println("=");
    		else
    			System.out.println("!=");
    	}
     
    	public static void test2(){
    		char c = '1';
    		int	i = 1;
    		if(i==Character.getNumericValue(c))
    			System.out.println("=");
    		else
    			System.out.println("!=");
    	}
     
    	/**
             * @param args
             */
    	public static void main(String[] args) {
    		test1();
    		test2();
    	}
     
    }
    le premier test renvoie "!=" (comme on peut légitimement s'y attendre) et le second renvoie "=". C'est pour ça que je disais que tout devait venir de la manière dont tu initialises ton programme .
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre éclairé
    Inscrit en
    Septembre 2009
    Messages
    269
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 269
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    for(j1=0;j1<256;j1++)
    	{
    	for(j2=0;j2<70;j2++)
    		{
    		for(i=0;i<8;i++)
    			{
    			if(tab[j1][i]==(tab2[j2][i]-'0'))
    				nbsuit++;//nombre d'égalité
    //affichage des résultat pour m'aider à débuguer
    			if(inbtest<2)
    				if(tab[j1][i]==(tab2[j2][i]-'0'))
    					System.out.println(tab[j1][i]+"*"+tab2[j2][i]+"*"+i+"*"+j1+"*"+j2);
    			}
     
    										}
    	}
    tab[][] est un tableau de char
    tab2[][] est un tableau de int

    le prog entier est assez long, et c'est le seul passage où ça plante

  11. #11
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Par défaut
    C'est normal que tu obtiennes des résultats aberrants vu que tu compares des torchons et des serviettes. Je ne sais pas exactement ce que tu cherches à faire, mais une comparaison valide serait par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(tab1[i][j]==Character.getNumericValue(tab2[i][j]))
    de cette manière là tu compares des int entre eux et non pas des int et des chars.


    @MigouW: si tu regardes la javadoc, Integer.valueOf() doit prendre un int en argument, donc ce n'est pas sain de lui donner un char comme ce que tu sembles suggérer . Par ailleurs cette méthode renvoie un objet Integer, donc tu te retrouves à comparer un int et un Integer et ce n'est pas sain non plus
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison entre 2 char
    Par miron dans le forum C
    Réponses: 8
    Dernier message: 29/05/2006, 12h56
  2. Réponses: 2
    Dernier message: 24/03/2006, 10h46
  3. Conversion int en char *
    Par Trunks dans le forum C
    Réponses: 6
    Dernier message: 18/03/2006, 16h44
  4. [C++] Conversion de int en char* ou SetDlgItemText()
    Par lastcheper dans le forum MFC
    Réponses: 3
    Dernier message: 11/04/2005, 17h46
  5. [SQL] Convertir un champ INT en CHAR dans un SELECT ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/03/2005, 14h45

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