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 :

Déterminer si un mot est un Palindrome


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut Déterminer si un mot est un Palindrome
    Bonsoir

    j'ai un exo à faire où il est question de déterminer si un mot est un palindrome en utilisant la récursivité.

    mon programme ne veut pas compiler et je ne vois pas du tout où réside l'erreur

    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
    class Palindrome{
    	static boolean Palindrome(String s){
    	if (s.length()<2){
    		return true;
    	}   else{
    		if (s.charAT(0)==s.charAT(s.length()-1))
    		return Palindrome(s.substring(1,s.length()-1));
    		else
    			return false;
    	}
     
    }
    }
    public class recus{
    public static void main (String []args){
    	System.out.println("donnez moi un String svp");
    	String m= lireString();
    	boolean b=Palindrome(m);
    	System.out.println("la reponse est"+b);
    }
    }
    auriez-vous un début de piste?

    merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    ça me fait bizarre de voir une classe utilisée comme tu le fais avec Palindrome m'enfin, ça doit être une partie de java que je n'ai pas exploré.

    Aurais-tu un rapport d'erreur?


    PS: la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (s.length()<2){
    		return true;
    	}   else{
    est inutile, et à première vue si le string à tester est vide ça ne marchera pas.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    le rapport m'indique 3 erreurs:



    merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Somme (Picardie)

    Informations forums :
    Inscription : Mai 2009
    Messages : 21
    Points : 24
    Points
    24
    Par défaut
    c'est charAt.

    Mais jette un oeil à cette classe et plus particulièrement à sa méthode reverse():
    http://java.sun.com/javase/6/docs/ap...ngBuilder.html

    Et un constructeur est sensé initialiser un objet, pas implémenter un algo de tests.

    Ce qui se conçoit clairement s'énonce clairement.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Mai 2009
    Messages : 104
    Points : 103
    Points
    103
    Par défaut
    Pour les deux premières erreurs: Tu fais appel à la méthode charAT qui n'existe pas! la méthode que tu dois utiliser est charAt (avec un t minuscule).

    Pour l'erreur à la ligne 20: as-tu importé la classe Palindrome dans la classe recus?


    Que dirais-tu de créer une méthode palindrome dans ta classe recus au lieu de créer une classe à part entière?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par Obi Yann Voir le message

    Et un constructeur est sensé initialiser un objet, pas implémenter un algo de tests.
    exactement

    je me doutais bien qu'il y avait une erreur de ce type dans mon programme

    je vais voir si je peux y remédier

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 67
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par HozakaN Voir le message
    Que dirais-tu de créer une méthode palindrome dans ta classe recus au lieu de créer une classe à part entière?
    c'est ce que je compte faire

    je vais voir ce que ça va donner wait and see

    et merci de m'avoir aiguiller Obi Yann et HozakaN

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2006
    Messages
    150
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations forums :
    Inscription : Novembre 2006
    Messages : 150
    Points : 48
    Points
    48
    Par défaut
    Voila comment je vois le truc :
    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
    import java.util.Scanner;
     
    public class Palindrome{
     
    	static boolean Palindrome(String s){
    		if (s.length()<2){
    			return true;
    		}   else{
    			if (s.charAt(0)==s.charAt(s.length()-1))
    				return Palindrome(s.substring(1,s.length()-1));
    			else
    				return false;
    		}
     
    	}
     
     
    	public static void main (String []args){
    		Scanner input = new Scanner (System.in);
    		String s ;
    		boolean b_palind;
     
    		do{
     
    		System.out.println("Chaîne de caractères ? (q pour quitter)");
     
    		s = input.nextLine();
    		b_palind = Palindrome(s);
     
    		if(b_palind)
    			System.out.println(s+" est un palindrome !");
    		else 
    			System.out.println(s+" n'est pas un palindrome ...");
    		}
     
    	while ((s.equals("q")== false));
     
    		System.out.println("Fin du programme");
     
     
    	}
     
     
     
     
    }
    2-3 conseils qu'on m'a donné ici même, sur ce forum :
    - pense à organiser ton code de la manière la + claire possible (indenter)
    - essaye de choisir des noms clairs de variable pour t'y retrouver après dans ton programme
    perso, j'essaye aussi de mettre à chaque nom de variable son type en abréviation (ici boolean : b_palind) ...

    Voilou

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 156
    Points : 190
    Points
    190
    Par défaut
    Je pense que c'est une très mauvaise idée que d'utiliser pour le nom d'une fonction static le nom de la classe, cela pourrais faire penser à un constructeur...

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 142
    Points : 153
    Points
    153
    Par défaut
    Citation Envoyé par HozakaN Voir le message
    Pour les deux premières erreurs: Tu fais appel à la méthode charAT qui n'existe pas! la méthode que tu dois utiliser est charAt (avec un t minuscule).

    Pour l'erreur à la ligne 20: as-tu importé la classe Palindrome dans la classe recus?


    Que dirais-tu de créer une méthode palindrome dans ta classe recus au lieu de créer une classe à part entière?
    Pour la troisième erreur, à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boolean b=Palindrome(s);
    il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    boolean b=Palindrome.Palindrome(s);

Discussions similaires

  1. Déterminer si une chaîne est un palindrome
    Par OohMyBabyDoll dans le forum x86 16-bits
    Réponses: 8
    Dernier message: 02/01/2016, 13h46
  2. [Turbo Pascal] Déterminer si une chaîne est un palindrome
    Par devnino dans le forum Turbo Pascal
    Réponses: 19
    Dernier message: 01/05/2014, 23h22
  3. [Dev-Pascal] Déterminer si une phrase est un palindrome
    Par gilldas dans le forum Autres IDE
    Réponses: 2
    Dernier message: 10/06/2012, 10h38
  4. verification si le mot est palindrome
    Par Echap dans le forum Débuter
    Réponses: 5
    Dernier message: 02/04/2009, 14h01
  5. Tester si un mot est palindrome
    Par imeys dans le forum Langage
    Réponses: 2
    Dernier message: 22/11/2005, 15h03

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