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 :

Programme qui ne fonctionne pas


Sujet :

avec Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Programme qui ne fonctionne pas
    Bonjour,

    Voici mon tout premier programme :
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    // Ce programme recopie une phrase dans une autre en inversant les lettres de chaque
    // mot, et en recopiant le minimum d’espaces dans la phrase résultat.
     
    public class RecopierPhraseInversantMot_v2
    {
     
        private static final int TAILLE = 80;                        // nombre maximum de caractères dans la chaîne
        private static final char CARTERM = '.';
        private static final char ESPACE = ' ';
     
        public static void main(String[] args)
     
        {
            do
            {
                char [] tabChar;
     
     
     
                tabChar = Outils.remplir(TAILLE);                        // fonction remplir un tableau phrase
     
                System.out.print("la phrase est : ");
                Outils.afficher(tabChar);
     
                recopier_inverser (tabCar);                // appel la procédure recopier_inverser
     
                System.out.print("la phrase inversée est : ");
                Outils.afficher(tabChar);
            }while (Dialogue1.veutContinuer());
        }
     
        public static void recopier_inverser ( char tabCar)
        {
            // procédure copier_inverser
            Entier i = new Entier();
            int i_t;
            int i_i;
            int taille_mot;
            int indinv;
     
            taille_mot = prendre_mot(tabCar, i);                        // appel la procédure prendre_mot
     
            while (taille_mot == 0)
            {
                inverser_mot(texte, ind, indinv, longmot, inverse);        // appel la pocédure inverser_mot
                if (taille_mot == 0)
                {
                    inverse [i_i] = ESPACE;
                    i_i = i_i + 1;
                } 
            }
     
        }
     
        public static int prendre_mot (char [] texte, Entier ind)
        {
            // procédure prendre_mot
     
            int lg;
            // éventuels espaces en début de mot sautés
            while (texte [ind.getVal()] == ESPACE)                        // arrêt si ce n'est pas un espace        
            {
                ind.incr();
            }                                                            // initialisation de la longueur
            lg = 0;
            while ((texte [ind.getVal()] != ESPACE) || (texte [ind.getVal()] != CARTERM ))
            {
                ind.incr();
                lg = lg + 1;
            }
            return lg;
        }
     
        public static void inverser_mot (char texte [], int ind, int indinv,int longmot, char inverse[] )
        {
            // procédure inverser_mot
            ind = ind - 1;
            while (longmot != 0)                                        // arret quand longmot <> 0
            {
                inverse [indinv] = texte [ind];
                indinv = indinv + 1;
                ind = ind + 1;
                longmot = longmot - 1;
            }                            
        }
     
    }
    mais il ne fonctionne pas.

    Quelqu'un saurait-il me guider un peu ?

    Merci d'avance pour votre aide.

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Si tu nous disais exactement ce qui ne va pas, comme des messages d'erreur explicites et l'endroit où elles se trouvent ? Ou les différences entre résultats attendus et obtenus ?

    Au passage :

    1) en Java, toute variable locale à une méthode doit être initialisée avant de pouvoir accèder à sa valeur, comme être utilisée dans un calcul, ou passée en paramètre à une méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public static void recopier_inverser ( char tabCar)
    	{
    		// procédure copier_inverser
    		Entier i = new Entier();
    		int i_t;
    		int i_i;
    		int taille_mot;
    		int indinv;
    ...
    ici i_i et indinv doivent être initialisées.

    2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static void recopier_inverser ( char tabCar)
    tabcar devrait être char[]

    3)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    taille_mot = prendre_mot(tabCar, i);						// appel la procédure prendre_mot
     
    		while (taille_mot == 0)
    		{
    			inverser_mot(texte, ind, indinv, longmot, inverse);		// appel la pocédure inverser_mot
    			if (taille_mot == 0)
    			{
    				inverse [i_i] = ESPACE;
    				i_i = i_i + 1;
    			} 
    		}
    Si taille_mot ne vaut pas 0, on ne fait rien (on ne rentre pas dans le while).
    Si taille_mot vaut 0 on fait une boucle infinie, parce qu'il n'y aucune instruction qui modifie cette variable.

    4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    inverse [indinv] = texte [ind];
    			indinv = indinv + 1;
    			ind = ind + 1;
    indinv et inv varient dans la même direction (tous les 2 incrémentés), donc ça risque pas d'inverser quoique soit.

    5)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    while (taille_mot == 0)
    		{
    			inverser_mot(texte, ind, indinv, longmot, inverse);		// appel la pocédure inverser_mot
    			if (taille_mot == 0)
    			{
    				inverse [i_i] = ESPACE;
    				i_i = i_i + 1;
    			} 
    		}
    ...
    Aucune variable appelée texte ou inverse n'est déclarée nulle part (ni localement à la méthode, ni dans la classe(ce qui ne faudrait pas faire)).


    6) il y'en a peut-être d'autres, mais je n'ai ni le temps ni l'envie de chercher

    [EDIT]Ah si, on peut voir rapidement que prendre_mot() n'est appelée qu'une seule fois (devrait à priori être appelée dans une boucle), donc, en toute logique, un seul mot sera traité.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2014
    Messages : 5
    Points : 4
    Points
    4
    Par défaut merci pour ton aide



    @+

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

Discussions similaires

  1. Programme "hello world" qui ne fonctionne pas
    Par Glork dans le forum Android
    Réponses: 8
    Dernier message: 14/12/2013, 18h35
  2. programme qui ne fonctionne pas!
    Par laureat dans le forum Débuter
    Réponses: 8
    Dernier message: 18/01/2010, 00h34
  3. Réponses: 4
    Dernier message: 13/10/2007, 15h18
  4. Programme qui ne fonctionne pas
    Par jipé95 dans le forum C
    Réponses: 7
    Dernier message: 26/04/2006, 19h08
  5. Programme Perl tout simple qui ne fonctionne pas
    Par jejerome dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2006, 23h58

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