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 :

Demander une chaine de caractères dans une pile en liste chainée


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    bordeaux
    Inscrit en
    Novembre 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Demander une chaine de caractères dans une pile en liste chainée
    bonjour tout le monde,

    je viens de faire un programme qui fonctionne très bien mais j'ai un soucis dans mon main.

    je dois demander à l'utilisateur de saisir une chaîne de caractère qui stocke chacun des caractères de cette chaîne dans une pile , qui inverse cette pile puis qui l'affiche.

    Toutes mes fonctions fonctionne. Actuellement il stocke que le premier caractère, je pense que cela vient du charAt (0) mais je ne sais pas comment faire car j'ai très peu utiliser le type char.

    Pouvez-vous m'aider, je suis sur le programme depuis ce matin.

    voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    public class Cellule {
    	char valeur;
    	Cellule suivant;
     
    	Cellule(char pvaleur) {
    		valeur = pvaleur;
    		suivant = null;
    	}
     
    }
    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
     
    import java.util.Scanner;
     
     
    public class pileListe {
     
    	 Cellule tete;
    pileListe(){
    	tete = null;
    }
    public void Afficher() {
    	Cellule c = tete;
    	while (c != null) {
    		System.out.print(c.valeur + " ");
    		c = c.suivant;
    	}
    }
    public void Empiler(char valeur) {
    	Cellule nc = new Cellule(valeur);
     
    	nc.suivant = this.tete;
    	this.tete = nc;
    }
     
    public boolean estVide (){
    	if (tete == null)return true;
    	return false;
    }
     
    public char depiler (){
    	char tmp = tete.valeur;
    	tete = tete.suivant;
    	return tmp;
    }
    public void inverser (){
    	pileListe pl = new pileListe();
    	Cellule c = this.tete;
    	while(c!= null){
    		pl.Empiler(c.valeur);
    		c = c.suivant;
    	}
    	this.tete = pl.tete;
    }
    public static void main(String[] args){
     
    	pileListe lp = new pileListe ();
    	System.out.println("Saisissez une chaine de caractère :");
    	Scanner sc = new Scanner(System.in);
    	String str = sc.nextLine();
    	char carac = str.charAt(0);
    	lp.Empiler(carac);
     
    	lp.Afficher();
    	System.out.print(("\r\n"));
    	lp.inverser();
    	lp.Afficher();
    }
     
     
    }

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 553
    Points : 21 609
    Points
    21 609
    Par défaut
    Hello,

    Hummm... Ainsi donc, on voit que charAt(0) donne le premier caractère...

    Petite devinette : à ton avis, que donnera charAt(1) ? Allez, on essaie !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    bonjour,
    Citation Envoyé par thelvin Voir le message
    Ainsi donc, on voit que charAt(0) donne le premier caractère...
    Petite devinette : à ton avis, que donnera charAt(1) ?
    Vu sa question je pense qu'elle ne vois pas comment récupérer le nombre de caractère sur la chaine !

    Citation Envoyé par chikita Voir le message
    Toutes mes fonctions fonctionne. Actuellement il stocke que le premier caractère, je pense que cela vient du charAt (0) mais je ne sais pas comment faire car j'ai très peu utiliser le type char.
    En effet c'est avec le charAt que tu as récupérer le 1er caractère... ce qui est le plus gênant est que semble ne pas en être certaine !!!
    Donc tu peux en effet récupérer chaque caractère de la chaîne avec charAt dans une boucle en fonction de la taille de la chaîne (str.length())
    Mais pour moi, le mieux serait de faire un for sur le tableau correspondant à la chaîne (char[] chars = str.toCharArray() et d'empiler chaque caractère.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Femme Profil pro
    bordeaux
    Inscrit en
    Novembre 2012
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : bordeaux
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2012
    Messages : 22
    Points : 19
    Points
    19
    Par défaut super
    j'ai réussi hier vers 23H00 en me creusant la cervelle. Je savais que charAt (0) récupérais que le premier caractère et il m'en fallait plusieurs.

    Merci a vous tous pour vos conseils qui m'aide à réfléchir car je tiens a faire moi-même mes programmes et surtout à les comprendre même si souvent

    Je vous laisse mon code que je met dans les balises et oui la dernière fois j'ai loupé les balises

    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
     
     
    import java.util.Scanner;
     
     
    public class pileListe {
     
    	 Cellule tete;
    pileListe(){
    	tete = null;
    }
    public void Afficher() {
    	Cellule c = tete;
    	while (c != null) {
    		System.out.print(c.valeur + " ");
    		c = c.suivant;
    	}
    }
    public void Empiler(char valeur) {
    	Cellule nc = new Cellule(valeur);
     
    	nc.suivant = this.tete;
    	this.tete = nc;
    }
     
    public boolean estVide (){
    	if (tete == null)return true;
    	return false;
    }
     
    public char depiler (){
    	char tmp = tete.valeur;
    	tete = tete.suivant;
    	return tmp;
    }
    public void inverser (){
    	pileListe pl = new pileListe();
    	Cellule c = this.tete;
    	while(c!= null){
    		pl.Empiler(c.valeur);
    		c = c.suivant;
    	}
    	this.tete = pl.tete;
    }
    public static void main(String[] args){
    	Scanner sc = new Scanner(System.in);
    	pileListe lp = new pileListe ();
    	for (int i = 1 ; i <=3 ; i++){
    	           System.out.println ("Saisir le caractère " + i );
    	           char c = sc.next().charAt(0);
     
    	lp.Empiler(c);
    	}
    	lp.Afficher();
    	System.out.print(("\r\n"));
    	lp.inverser();
    	lp.Afficher();
    }
     
     
    }

  5. #5
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Points : 2 061
    Points
    2 061
    Par défaut
    je trouve que cela ne va pas pour deux raisons :
    • Tu limites la saisie a n caractères (ici a 3), et c'est donc figé dans le code
    • tu demandes a l'utilisateur de rentrer sa chaîne caractère par caractère, ce qui est vraiment lourd


    Je t'ai pourtant fournis une solution qui a mon sens est bien plus simple et plus sympas pour l'utilisateur, as tu vraiment lu les réponses ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    System.out.println("Saisissez une chaine de caractère :");
    Scanner sc = new Scanner(System.in);
    pileListe lp = new pileListe ();
    String ligne = sc.nextLine();
    char[] chars = ligne.toCharArray();
    for (int i = 0; i < chars.length; i++) {
    	lp.Empiler(chars[i]);
    }
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 26/12/2010, 21h20
  2. [MFC] Insertion d'une chaine de caractère dans une BD
    Par julien.nasser dans le forum MFC
    Réponses: 2
    Dernier message: 20/04/2006, 15h19
  3. Récupérer une chaine de caractère dans une page
    Par BrunS dans le forum Langage
    Réponses: 3
    Dernier message: 15/11/2005, 14h28
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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