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 :

problème sur un palindrome


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Par défaut problème sur un palindrome
    bonjour j ai un problème sur le code si je rentre une phrase avec des espaces ,il y a l'erreur "String index out of bounds exeption" sinon tout va bien
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    import java.util.Scanner;
     
    public class Palindrome {
     
    	static Scanner clavier = new Scanner(System.in);
    	public static void main(String[] args) {
    		//on entre une phrase au clavier
    		System.out.println("Veuillez entrer une phrase :");
    		String phrase = clavier.nextLine();
     
    		//on garde que les lettres de l alphabet
    		String temp = "";
    		for (int i = 0; i < phrase.length(); i++) {
    			char c = phrase.charAt(i);
    			if(Character.isLetter(c) ) {
    				//on récupère les caractères dans l'objet temporaire
    				temp += c; 
    			}
     
    		}//on met tout en minuscule et on le stock dans l objet test
    		String test = temp.toLowerCase();
    		System.out.println(test);
    		//on initialise les variables pour le test
    		int leftpos = 0;
    		int rightpos =phrase.length()-1;
    		boolean palindrome = true;
    		// on commence le test avec une boucle		
    		while ((leftpos<rightpos) && palindrome){
    			if(test.charAt(leftpos) == test.charAt(rightpos)) {
    				palindrome = true;
    			leftpos++;
    			rightpos--;
    			}else {
    				palindrome = false;
    			}
    		}if(palindrome) {
    			System.out.println("c'est un palindrome");
    		}else {
    			System.out.println("Non ce n'est pas un palindrome");
     
    		}
    	}
     
    }
    je l avais réalisé ,il marchait,j 'ai tout refait pour comprendre le code et après l avoir refait il y a eu cette erreur comme quoi je dépasse l index ?? apparemment quelque chose m ''échappe..
    merci pour vos réponses.

  2. #2
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    rightpos doit être définie en fonction de la longueur de test pas de celle de phrase (qui a potentiellement plus de caractères).

    La ligne palindrome = true; ne sert à rien.

    ps: le minimum syndicale lorsqu'on code c'est d'avoir une indentation impeccable. Quelques sauts de ligne ne peuvent pas faire de mal non plus.

  3. #3
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Par défaut
    merci cosmoKnacki,,. ok, quel étourdi...,demain je refais..
    Est ce que l indention et les espaces sont corrects pour que je prenne de bonnes habitudes ,merci
    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
    import java.util.Scanner;
     
    public class Palindrome {
     
    	static Scanner clavier = new Scanner(System.in);
     
    	public static void main(String[] args) {
     
    		//on entre une phrase au clavier
    		System.out.println("Veuillez entrer une phrase au clavier");
    		String phrase = clavier.nextLine();
     
    		//on recupère les caractères dans un fichier temporaire
    		String temp = "";
    		for (int i = 0; i < phrase.length(); i++) {
    			char c = phrase.charAt(i);
    			if(Character.isLetter(c)) {
    				temp += c;
    			}
    		}
    		//on met tout en minuscule
    		String test = temp.toLowerCase();
     
    		// on boucle pour voir si c'est un palindrome
    		int leftpos = 0;
    		int rightpos = test.length()-1;
    		boolean palindrome = true;
    		while(eftpos < rightpos && palindrome) {
    			palindrome = test.charAt(leftpos) == test.charAt(rightpos);
    			leftpos ++;
    			rightpos --;
     
    		} if(palindrome) {
      			System.out.println("C'est un palindrome");
     
    		}else {
    			System.out.println("Non ce n'est pas un palindrome");
    		}
     
     
    	}
     
    }

  4. #4
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 986
    Par défaut
    Pour l'indentation c'est mieux, mise à part:Quand je disais que la ligne palindrome = true; était inutile, je pensais plutôt à simplement l'enlever:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if(test.charAt(leftpos) == test.charAt(rightpos)) {
        leftpos++;
        rightpos--;
    } else {
        palindrome = false;
    }
    Comme ça tu n'as pas à affecter true à la variable palindrome qui est déjà à true.

  5. #5
    Membre averti
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2019
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juillet 2019
    Messages : 49
    Par défaut
    voila j' ai modifié le if (palindrome),je pense que c'est ce que tu voulais dire ?
    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
    import java.util.Scanner;
     
    public class Palindrome {
     
    	static Scanner clavier = new Scanner(System.in);
    	public static void main(String[] args) {
    		//on entre une phrase au clavier
    		System.out.println("Veuillez entrer une phrase au clavier");
    		String phrase = clavier.nextLine();
     
    		//on recupère les caractères dans un fichier temporaire
    		String temp = "";
    		for (int i = 0; i < phrase.length(); i++) {
    			char c = phrase.charAt(i);
    			if(Character.isLetter(c)) {
    				temp += c;
    			}
    		}
    		//on met tout en minuscule
    		String test = temp.toLowerCase();
     
    		// on boucle pour voir si c'est un palindrome
    		int leftpos = 0;
    		int rightpos = test.length()-1;
    		boolean palindrome = true;
    		while((leftpos < rightpos )&& palindrome) {
    			if( test.charAt(leftpos) == test.charAt(rightpos)) {
    			leftpos ++;
    			rightpos--;
    			}else {
    				palindrome = false;
    			}
    		}
    		if(palindrome) {
    			System.out.println("C'est un palindrome");
    		}else {
    			System.out.println("Non c n'est pas un palindrome");
    		}
     
     
     
    	}
     
    }

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

Discussions similaires

  1. Problème sur la recherche fulltext en v4 !
    Par poppa dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/05/2004, 23h06
  2. Problème sur fiche MDIchild
    Par nivet dans le forum Composants VCL
    Réponses: 6
    Dernier message: 23/01/2004, 08h07
  3. Problème sur GetPrivateProfileString ???
    Par Bordelique dans le forum Langage
    Réponses: 7
    Dernier message: 25/06/2003, 22h15
  4. Problème sur une requête INSERT
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/06/2003, 08h45
  5. problème sur une requête!!!!!
    Par Mcgrady_01 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2003, 01h17

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