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 :

Fonction .replace qui ne fonctionne pas.


Sujet :

avec Java

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut Fonction .replace qui ne fonctionne pas.
    Bonjour à tous, je suis en train d'apprendre Java avec des bouquins et je teste des petits programmes avec Netbeans 7.1.
    Cependant j'ai un soucis avec la fonction .replace dans le programme ci-dessous :
    http://img405.imageshack.us/img405/5...2012120237.png

    Merci d'avance pour votre aide !

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par Rominou777 Voir le message
    Cependant j'ai un soucis avec la fonction .replace dans le programme ci-dessous :
    http://img405.imageshack.us/img405/5...2012120237.png
    Je te conseille de recopier ton code ici en l'insérant entre balise [code], ça rendra la chose plus lisible pour l'utilisateur.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Deux choses :

    - Ne nous montre pas une image du programme. Copie/colle ton programme ici.

    - Ça doit être une embrouille dans les charsets. Tu devrais afficher des System.out.println() des mois tapés, transformés avec replace(), et des String de remplacement utilisées dans replace().
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Voici donc mon code :
    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
    30
    31
    32
    import java.util.Scanner;
     
    public class JourParMois {
     
     
        public static void main(String[] args) {
            String mois;
            byte nbjours = 0;
            short année;
            Scanner lectureClavier = new Scanner (System.in);
            System.out.println ("De quel mois s'agit-il ? : ");
            mois = lectureClavier.nextLine();
            mois = mois.replace ("û","u");
            mois = mois.replace ("é","e");
            mois = mois.toLowerCase ();
            System.out.println ("De quel année ? : ");
            année = lectureClavier.nextShort();
     
            switch (mois) {
                case "janvier": case "mars": case "mai": case "juillet": case "aout": case "octobre": case "decembre": nbjours = 31;
                    break;
                case "avril": case "juin": case "septembre": case "novembre": nbjours = 30;
                    break;
                case "fevrier": if (année % 4 == 0 && année % 100 != 0 || année % 100 == 0) nbjours = 29;
                else nbjours = 28;
                    break;
                default : System.out.println ("Ce mois n'existe pas ! ");
                    System.exit (0);
            }
            System.out.println ("En " +année+ " le mois de " +mois+ " a " +nbjours+ " jours.");
        }
    }

    Je précise que j'ai essayé la fonction replace à part et elle marche très bien, mais pas dans ce programme ...

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Tu as fait ce que demande Robin56 et que j'ai répété comme premier point.
    C'est bien.

    Maintenant, occupe-toi de mon deuxième point.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Et encore c'est Robin qui a tout fait, j'avais oublié de mettre la balise code

    J'ai fais ce que tu m'as dis et effectivement l'accent (é) n'est pas pris en compte, il affiche un carré :
    De quel mois s'agit-il ? :
    février
    f�vrier


    Comment puis-je résoudre ça ?

  7. #7
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,
    short année;
    Ne jamais utiliser des caractères spéciaux ou accentués dans le nom d'un variable ou fonction.
    Tu n'as que 2 caractères à modifier donc faire 2 lignes de replace ça va. Sinon, je te conseille de mettre tous les caractères spéciaux dans un array et les caractères de remplacement dans un autre array dont les indices de caractères à remplacer et de remplacement sont le même.
    Tes fichers .java sont encodés en quel encodage?

    A+.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Mes programmes sont en UTF-8 (si j'ai bien compris ta question).
    Et sinon je ne sais pas encore ce qu'est un array ni comment l'utiliser.
    Comme je l'ai dis précédemment dans un autre programme ca marche :
    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
    import java.util.*;
     
    public class Test2 {
     
        public static void main(String[] args) {
            String p1, p2;
            p1 = "éléphant";
            System.out.println (p1);
            p2 = p1.replace ("é","e");
            System.out.println (p2);        
        }
    }
     
    run:
    éléphant
    elephant
    GÉNÉRATION TERMINÉE (durée totale* 0 secondes)
    Qu'est ce qui est différent par rapport à l'autre ?

  9. #9
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    quand tu crée ton scanner, précise explicitement l'encodage (par exemple utf-8) et dans eclipse, assure toi que la console est bien en utf-8 (préférences de la console).

    @Andry.aime: même si je ne suis pas fan des noms francophone, il n'y a pas de raison de retirer l'accent, il est conforme aux recommandations de nommage des variables.

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Je suis dans Netbeans 7.1, et au niveau des paramètres je suis déjà en UTF8.
    Sinon comment dois-je faire pour préciser l'encodage ?
    Et surtout pourquoi la commande replace marche dans le 2nd programme et pas dans le 1er , ou se situe la différence ???

  11. #11
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    @Andry.aime: même si je ne suis pas fan des noms francophone, il n'y a pas de raison de retirer l'accent, il est conforme aux recommandations de nommage des variables.
    Oui je sais que ça se compile si le code est bien encodé. Si tu colles (copier/coller) un nom variable avec accent encodé en iso-8859-1 dans un code java en utf8, on aura un problème lors de la compilation.

  12. #12
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par Rominou777 Voir le message
    Sinon comment dois-je faire pour préciser l'encodage ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Scanner lectureClavier = new Scanner (System.in, "UTF-8");

  13. #13
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Oui je sais que ça se compile si le code est bien encodé. Si tu colles (copier/coller) un nom variable avec accent encodé en iso-8859-1 dans un code java en utf8, on aura un problème lors de la compilation.
    Le copie colle s'en fout de l'encodage (c'est l'OS qui gère le copier/coller). Quand à l'encodage à la compilation, je préfère avoir une erreur de compilation parce que j'ai pris le mauvais codage dans le compilateur que d'avoir toutes mes strings java corrompues sans avertissement

  14. #14
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    Le copie colle s'en fout de l'encodage (c'est l'OS qui gère le copier/coller).
    je ne sais pas si ça vient du copier coller ou non, mais j'ai connu un mec qui avait utilisé un nom d'attribut avec accent (pris du spec rédigé par un responsable fonctionnel) qui a généré des erreurs d'encodage pendant la compilation et je l'ai seulement conséillé de retirer ces accents, ce qui a pu résoudre le problème.

  15. #15
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    J'ai précisé l'encodage mais ca ne marche toujours pas.

  16. #16
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Beuh, c'est galère.

    Si le System.in n'est pas dans l'encodage par défaut, le System.out ne l'est sans doute pas non plus. C'est quand même très bizarre.

    Quand tu changes l'encodage du Scanner, tu devrais aussi changer l'encodage de System.out, vers le même encodage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out = new PrintStream(System.out, false, "utf-8");
    Et bien sûr, si ça ne marche pas avec utf-8, il faut en essayer d'autres. Enfin, il faut essayer iso-8859-1, au moins. Lequel est le bon, ça dépend de la console utilisée, on peut pas deviner.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Ca marche avec iso-8859-1 :
    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
    import java.util.Scanner;
     
    public class Test2 {
     
        public static void main(String[] args){
            String p1, p2;
            Scanner lectureClavier = new Scanner (System.in, "iso-8859-1");
            System.out.println ("Phrase : ");
            p1 = lectureClavier.nextLine ();
            System.out.println (p1);
            p2 = p1.replace ("é","e");
            System.out.println (p2);        
        }
    }
    run:
    Phrase : 
    éléphant
    éléphant
    elephant
    GÉNÉRATION TERMINÉE (durée totale  3 secondes)
    Est-ce que tu pourrais m'expliquer vite fait à quoi correspond cet encodage, et comment faire pour ne pas avoir à le préciser à chaque fois dans mes programmes ?

  18. #18
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Beuh, c'est galère.

    Si le System.in n'est pas dans l'encodage par défaut,
    System.in est un inputstream, System.out est un printstream. Ces classes n'ont rien à voir.

    Maintenant, il est vrai que si System.out a pris le bon encodage, Scanner aurait du le prendre aussi, a moins que netbeans utilise un encodage séparé pour l'input et l'output de sa console :s


    Pour éviter d'avoir le problème, il faut normalement prendre le scanner sans argument, qui utilisera l'encodage par défaut de la plateforme. Mais il faut aussi configurer l'encodage de la console netbeans pour qu'il corresponde.

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Février 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 8
    Points : 1
    Points
    1
    Par défaut
    Suis-je le seul à utiliser Netbeans ?
    Si quelqu'un s'y connait en Netbeans j'aimerais bien qu'il me dise comment faire. J'ai déjà chercher mais je trouve pas les options avancées avec le paramétrage des sources ...

  20. #20
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2008
    Messages
    328
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mexique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 328
    Points : 459
    Points
    459
    Par défaut
    Citation Envoyé par Rominou777 Voir le message
    Mes programmes sont en UTF-8 (si j'ai bien compris ta question).
    Et sinon je ne sais pas encore ce qu'est un array ni comment l'utiliser.
    Comme je l'ai dis précédemment dans un autre programme ca marche :
    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
    import java.util.*;
     
    public class Test2 {
     
        public static void main(String[] args) {
            String p1, p2;
            p1 = "éléphant";
            System.out.println (p1);
            p2 = p1.replace ("é","e");
            System.out.println (p2);        
        }
    }
     
    run:
    éléphant
    elephant
    GÉNÉRATION TERMINÉE (durée totale* 0 secondes)
    Qu'est ce qui est différent par rapport à l'autre ?
    La grosse différence c'est que tu n'utilises pas Scanner mais p1 = "éléphant";

    Cordialement,

    Dan

Discussions similaires

  1. Réponses: 20
    Dernier message: 06/05/2010, 12h32
  2. Update et replace qui ne fonctionnent pas
    Par maysa dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 11/02/2008, 13h47
  3. Fonction mysql qui ne fonctionne pas pour un ancien postgreIste
    Par floreasy dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 15/01/2008, 18h49
  4. [SQL] Fonction SUM qui ne fonctionne pas !
    Par nigg4z dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 11/10/2007, 16h20
  5. Fonction While {} qui ne fonctionne pas
    Par zoom61 dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2006, 12h17

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