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 :

probleme d'inversion de caractére d'une string


Sujet :

avec Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Par défaut probleme d'inversion de caractére d'une string
    Bonjour,

    Dites moi pourquoi il n'inverse pas cette string par exemple: 0111 pour qu'il affiche a la fin 1110 sachant qu'il y a une fonction avant qui me donne en int le nombre 0111 c'est pour ça que j'utulise integer.parseint.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void main(String [] args){
     
        	String NbrBinaire = Integer.toString(0111);
     
    		int longeur = NbrBinaire.length(); 
     
    		for(int i=(longeur-1) ; i>=0 ; i--)
    			System.out.print(NbrBinaire.charAt(i));
    	}
    Merci d'avance.

  2. #2
    Membre averti
    Inscrit en
    Février 2004
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 20
    Par défaut
    Bonjour,

    Tu peux executer un test qui checke la longueur de ton string avant le substring.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    int len = 2;
     
    String in = "chaine input";
    String out = in;
     
    if ( in.length <= len )
      out = in.subString(0, 2);

  3. #3
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    J'ai l'impression que ce que tu cherche a faire est incorrect.

    Dans un int, il n'y a pas de notion de nombre de 0 devant les chiffres significatif. Le nombre entier 0111 n'existe donc pas.

    Tu n'as pas d'erreur, car en Java(et pas mal de langages), faire précéder un nombre par 0 signifie que l'on utilise la notation octale(base 8) et non décimale. Le 0111 de ton exemple vaut donc en fait 73 (1*8² + 1*8 + 1).
    Si tu veux formater un int en String avec des 0 devant, regarde du coté de la classe NumberFormat.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Par défaut
    j'ai trouver ca

    To format a number for the current Locale, use one of the factory class methods:

    myString = NumberFormat.getInstance().format(myNumber);


    dans l'api java mais je ne sais pas comment vraiment appeller la fonction je devrai changer Integer.toString par NumberFormat.getInstance().format mais ca marche pas merci

  5. #5
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Que veux-tu faire précisément ?

    a++

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Par défaut
    moi je veux inverser les caractére 0111 en 1110 y'a une solution pour ca moi ce que j'ai fait n'a pas marcher y'a Uther qui as suggerer d'utiliser la class NumberFormat mais je ne sais pas comment l'utiliser. si t'a d'autre idée elle est la bienvenu sinon si tu sais comment je pourrai utiliser la class NumberFormat

  7. #7
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Ce n'est toujours pas clair : tu es très vague dans ta description et tu mélanges les types String et int... Ici tu parles de caractère alors que dans ton code initial tu utilises un int encodé en octal (comme l'a précisé Uther)

    Perso je ne comprend toujours pas ce que tu veux faire précisément ! Donc soit plus explicatif sur ce que tu veux faire (et pas comment tu le fait).

    Sinon tu vas obtenir plein de solutions... mais aucune ne correspondra à ton problème...

    a++

  8. #8
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    J'aimerai que tu explique plus précisément ce que doit faire ton programme. J'ai l'impression que tu essaies de traiter des nombre binaire de manière complètement inadéquate, car je vois plusieurs de choses qui me paraissent incohérentes:

    - Ta string s'appelle nbrBinaire mais elle est obtenue directement a partir d'un long sans préciser de base(donc base 10).

    - Tu veux inverser l'ordre des octets en tenant compte des 0 non significatif, mais ça n'a aucun sens si le nombre de caractère n'est pas fixe. Or rien ne le laisse supposer.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Par défaut
    ok beh voila tous mon code:
    ce programme permet de convertir récursivement un nombre
    positif en code binaire. Par exemple, en lançant java Binaire 14, le programme
    doit afficher 1110 sur l’écran.
    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
     
    public class Binaire {
     
        public static int Binaire(int Nombre) {
        	if(Nombre == 0 || Nombre == 1)
        		return Nombre;	
        	else{
        		System.out.print((int)(Nombre % 2));
    			return Binaire(Nombre/2);
        	}
        }
        public static void main(String [] args){
     
        	int Entree = Integer.parseInt(args[0]);
     
        	String NbrBinaire = Integer.toString(Binaire(Entree));
     
    		int longeur = NbrBinaire.length(); 
     
    		for(int i=(longeur-1) ; i>=0 ; i--)
    			System.out.print(NbrBinaire.charAt(i));
    	}
     
    }
    le probléme c'est qu'il n'inverse pas ce que retourne la fonction Binaire. si vous voyez comment je pourrai résoudre ca par n'importe quel facon dite le moi svp. Merci

  10. #10
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Tu veux afficher un nombre en binaire ?

    Dans ce cas Integer.toBinaryString(i)


    a++

  11. #11
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 690
    Par défaut
    Comme je le pensais tu mélanges les nombres en base 10 et 2.

    Par défaut le parseInt s'attend a avoir du décimal si tu ne lui précise pas.
    Avec int Entree = Integer.parseInt(args[0]), Entée vaut donc le nombre décimal 1110.
    Avec int Entree = Integer.parseInt(args[0]), Entrée vaut le nombre décimal nombre 14.

    De même si on veut afficher un nombre sous forme binaire on peut utiliser Integer.toString(Nombre,2).

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 20
    Par défaut
    d'une part c'est un devoir donc pas de note si je n'utilise pas la recursivité
    d'autre part Uther je lui pass 14 en paramétre puis Binaire le prend et fais les calcul pour donner a la fin 0111 moi j'ai utiliser tostring juste pour changer en string le nombre 0111 fait que 0 du debut devra etre considérer comme un caractére de appartenant a string. c'est ca ce qui devrai etre logiquement, en plus si vous lui dite d'afficher NbrBinaire.length() vous verrez qu'il affichera 0111 c'est ca qui me fait perdre la tete des chose insensé.
    si vous avez d'autre proposition que cella je suis toujours present

  13. #13
    Membre expérimenté Avatar de jiddou
    Inscrit en
    Août 2007
    Messages
    247
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 247
    Par défaut
    Citation Envoyé par american Voir le message
    j'ai trouver ca

    To format a number for the current Locale, use one of the factory class methods:

    myString = NumberFormat.getInstance().format(myNumber);


    dans l'api java mais je ne sais pas comment vraiment appeller la fonction je devrai changer Integer.toString par NumberFormat.getInstance().format mais ca marche pas merci
    A mon avis c'est incorrect ce que tu essais de faire puis que dès la récupération d'un entier du genre 0111 dans une variable c'est fini pour le zéro non significatif.Dc tu dois tout faire pour avoir ton nombre dans une chaine dès le début.Si c'est un nombre Saisie essai de le récupérer dans un String

  14. #14
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par american Voir le message
    d'une part c un devoir donc pas de note si je n'utilise pas la recursivité
    Pourquoi ne pas demander plus de détail à ton prof alors ? Il est là pour cela !!!


    Citation Envoyé par american Voir le message
    d'autre part Uther je lui pass 14 en paramétre puis Binaire le prend et fais les calcul pour donner a la fin 0111
    Non elle ne peut retourner que 0 ou 1... Enfin c'est les seul valeur de retour que je vois dans le code !

    Citation Envoyé par american Voir le message
    moi j'ai utiliser tostring juste pour changer en string le nombre 0111 fait que 0 du debut devra etre considérer comme un caractére de appartenant a string.
    Heu... C'est incompréhensible !?

    Citation Envoyé par american Voir le message
    c'est ca ce qui devrai etre logiquement, en plus si vous lui dite d'afficher NbrBinaire.length() vous verrez qu'il affichera 0111
    Heu : tu l'affiches comment pour avoir ce résultat


    Citation Envoyé par american Voir le message
    c'est ca qui me fait perdre la tete des chose insensé.
    Moi ce qui me fait "perdre la tête" c'est qu'on ne sait toujours pas précisément ce que tu veux faire...

    Tu as posté un code vraiment bizarre et difficile à comprendre (et à lire : tu devrais déjà respecter les conventions de nommage), mais tu n'as toujours pas expliquer clairement CE QUE TU VEUX FAIRE.


    Sur ce, bon courage, car je crois que je vais laisser tomber (je n'ai franchement plus envie de continuer à essayer de deviner ce que tu veux faire).

    a++

Discussions similaires

  1. [RegEx] Remplacer des caractères dans une string
    Par jexl dans le forum Langage
    Réponses: 2
    Dernier message: 15/03/2007, 22h26
  2. [deb]Accéder aux caractères d'une string
    Par Raideman dans le forum C++
    Réponses: 4
    Dernier message: 22/08/2006, 15h28
  3. Connaitre le jeu de caractères d'une String ?
    Par dedz dans le forum Langage
    Réponses: 7
    Dernier message: 29/06/2006, 14h15
  4. Réponses: 7
    Dernier message: 29/05/2006, 14h46
  5. Réponses: 6
    Dernier message: 24/07/2003, 12h39

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