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 :

Répéter un motif dans une chaine de caractères


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2021
    Messages : 2
    Par défaut Répéter un motif dans une chaine de caractères
    Bonjour,

    Je suis débutant en JAVA et malgré tous les tuto il y a un truc que je n'arrive pas à faire ;

    Il s'agit d'étendre un string(sans mauvais jeu de mots) en fonction du nombre qui précède, par exemple a4b fait aaaab, ab5c fait abccccc etc.. et de même pour les nombres genre a12b fait 12a puis un b.
    Voila en gros ce que j'ai essayé

    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
    public class HelloWorld
    {
        public static void main(String[] args)
        {
            String res="";
            int out;
            String s="ab3c";
            int x=5;
     
            for (int i = 0 ; i < s.length() ;i++){
                out=i+1;
                if (s.charAt(out) instanceof int) {
                    for (int j=0; j<out; j++){
                        res+=s.charAt(i);
                    }
                }
            }
            System.out.print(res);
        }
    }
    Mais ça ne marche pas peu importe ce que je fais ça ne marche pas, si quelqu'un a une idée ça m'aiderait beaucoup.. Avec explications de préférence si vous utilisez des trucs plus poussés !

  2. #2
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Bonjour,

    Il y a un élément crucial que tu dois obligatoirement savoir lorsque tu commences à étudier le Java (très sérieusement).
    La classe String est immuable, c'est-à-dire stricto-sensus, dès lors que tu as instancié (et initialisé) un objet de la classe String sa valeur ne peux plus être modifiée.

    C'est pour cela que quoi que tu fasses comme tu dis cela ne marche pas.
    Je t'invite fortement à lire (ou relire) la section d'un bon ouvrage Java traitant de la classe String, et tu comprendras pourquoi cela ne marche pas comme tu faisais et comment y remédier.

    Je te laisse chercher.
    Transact.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2021
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2021
    Messages : 2
    Par défaut
    Salut, En gros je ne peux pas modifier un string je peux juste y ajouter des valeurs ? J'ai essayé de compenser ça avec une regex pour ne pas avoir à modifier le string avec ça

    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
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    public class HelloWorld
    {
        public static void main(String[] args)
        {
            String res="";
            int out;
            Pattern p = Pattern.compile("[0-9]");
            String s="ab3c";
            int x=5;
            for (int i = 0 ; i < s.length() ;i++){
                Matcher m = p.matcher(s.charAt(out));
                out=i+1;
                if (m.matches()) {
                    for (int j=0; j<s.charAt(out); j++){
                        res+=s.charAt(i);
                    }
                }
                System.out.print(res);
            }
        }
    }
    Mais il y a encore plus d'erreurs, je pense que je vais juste recommencer à 0, tu aurais un indice de la méthode stp ?

  4. #4
    Membre très actif

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2013
    Messages
    412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2013
    Messages : 412
    Billets dans le blog
    2
    Par défaut Une pince à linge de chaque côté
    Pour étendre un string, mettre une forte pince à linge aux deux extrémités


  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    pour regarder si quelque chose que tu trouves dans une String est un nombre, contente-toi de vérifier si c'est entre '0' et '9' -_-°.

    Pas de instanceof. Pas de matcher.

    (Une regex pourrait être une manière de résoudre le problème, mais tu es trop embrouillé pour l'instant.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre chevronné
    Avatar de Rony Rauzduel
    Homme Profil pro
    En formation Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    638
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : En formation Architecte logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2008
    Messages : 638
    Par défaut
    Bonjour,

    pour regarder si quelque chose que tu trouves dans une String est un nombre, contente-toi de vérifier si c'est entre '0' et '9' -_-°.
    C'est une très bonne méthode parmi tant d'autre, par contre la "problèmatique" que va rencontrer notre "jeune padawan Java" est de savoir qu'il devra utiliser la table ASCII des caractères.

    Sinon, tu peux aussi utiliser la méthode isDigit(char ch) de la classe Character, à utiliser dans une boucle parcourant ta chaîne de caractères pour vérifier si le caractère est un nombre.

    Sans conteste, tu devrais voir (ou revoir) tes fondamentaux sur la programmation Java.

    Transact.

  7. #7
    Membre habitué
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Par défaut
    Citation Envoyé par Fentes Voir le message
    Bonjour,

    Je suis débutant en JAVA et malgré tous les tuto il y a un truc que je n'arrive pas à faire ;

    Il s'agit d'étendre un string(sans mauvais jeu de mots) en fonction du nombre qui précède, par exemple a4b fait aaaab, ab5c fait abccccc etc.. et de même pour les nombres genre a12b fait 12a puis un b.
    Voila en gros ce que j'ai essayé

    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
    public class HelloWorld
    {
        public static void main(String[] args)
        {
            String res="";
            int out;
            String s="ab3c";
            int x=5;
     
            for (int i = 0 ; i < s.length() ;i++){
                out=i+1;
                if (s.charAt(out) instanceof int) {
                    for (int j=0; j<out; j++){
                        res+=s.charAt(i);
                    }
                }
            }
            System.out.print(res);
        }
    }
    Mais ça ne marche pas peu importe ce que je fais ça ne marche pas, si quelqu'un a une idée ça m'aiderait beaucoup.. Avec explications de préférence si vous utilisez des trucs plus poussés !
    Moi aussi je suis débutante, alors j'ai cherché et j'ai trouvé ca :

    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
    package exos.pour.entrainement;
     
    public class HelloWorld {
     
    	//Extraire le nombre de la chaine	
    	public static String extraireNbre (final String s1)
    	{
     
    		StringBuilder sb2 = new StringBuilder();
    		boolean nbrTrouve = false;
     
    		for (char nbr : s1.toCharArray())
    		{
    			if (Character.isDigit(nbr))
    			{
    				sb2.append(nbr);
    				nbrTrouve = true;
    			} else if (nbrTrouve) {break;}
    		}
    		return sb2.toString();
    	}
    	//concaténer un String
    	public static String concatNbre (int nb, String str)
    	{
    		for (int i = 0; i<nb; i++)
    		{
    			System.out.print(str);
    		}
    		return str;
    	}
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
     
    		String s = "a4bc";
    		StringBuilder sb = new StringBuilder(s);
     
    		//extraire le nombre
    		String s1 = extraireNbre (s);
    		System.out.println(s1);
     
    		//rechercher la position du 4
    		int position = s.indexOf(s1);
    		System.out.println(position);
     
    		//"transformer le String 4 en nombre
    		int nbre = Integer.parseInt(s1);
    		System.out.println(nbre);
     
    		//rechercher le char à concaténer qui se trouve avant le nombre
    		char c = s.charAt(position-1);
    		System.out.println(c);
    		String s2 = Character.toString(c); //"transformer le char en string pour pouvoir le concaténer après avec ma fonction concatNbre
     
    		String s3 = concatNbre(nbre-1, s2); //j'ai enlevé 1 car sinon ca faisait 5 a au lieu de 4
     
    		//remplacer les 2 premiers char par la chaine concaténée
    		sb.replace(position-1,position+1, s3);
    		System.out.println(sb);
     
     
     
    	}
    }
    ce qui donne : "aaaabc". J'ai pas cherché plus, j'ai pas cherché à modifier la chaine ni rien, mais je te laisse tester. Etant débutante, j'ai pas cherché à savoir si ce code prend beaucoup de place ni rien, mais j'ai juste essayé de comprendre le fonctionnement, car je ne m'y connais pas trop ^^
    Pour la fonction extraire nombre je l'ai trouvé sur internet et j'ai essayé d'en comprendre le fonctionnement. Je t'invite à faire de même en testant plusieurs trucs.
    Je sais pas du tout si j'ai bon, mais voilà je me suis amusée à m'entrainer et surtout apprendre comment ca fonctionne tout ca.

  8. #8
    Membre habitué
    Femme Profil pro
    Développeur Java
    Inscrit en
    Juin 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juin 2020
    Messages : 11
    Par défaut
    Citation Envoyé par BettyBlu3 Voir le message
    Moi aussi je suis débutante, alors j'ai cherché et j'ai trouvé ca :

    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
    package exos.pour.entrainement;
     
    public class HelloWorld {
     
    	//Extraire le nombre de la chaine	
    	public static String extraireNbre (final String s1)
    	{
     
    		StringBuilder sb2 = new StringBuilder();
    		boolean nbrTrouve = false;
     
    		for (char nbr : s1.toCharArray())
    		{
    			if (Character.isDigit(nbr))
    			{
    				sb2.append(nbr);
    				nbrTrouve = true;
    			} else if (nbrTrouve) {break;}
    		}
    		return sb2.toString();
    	}
    	//concaténer un String
    	public static String concatNbre (int nb, String str)
    	{
    		for (int i = 0; i<nb; i++)
    		{
    			System.out.print(str);
    		}
    		return str;
    	}
     
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
     
     
    		String s = "a4bc";
    		StringBuilder sb = new StringBuilder(s);
     
    		//extraire le nombre
    		String s1 = extraireNbre (s);
    		System.out.println(s1);
     
    		//rechercher la position du 4
    		int position = s.indexOf(s1);
    		System.out.println(position);
     
    		//"transformer le String 4 en nombre
    		int nbre = Integer.parseInt(s1);
    		System.out.println(nbre);
     
    		//rechercher le char à concaténer qui se trouve avant le nombre
    		char c = s.charAt(position-1);
    		System.out.println(c);
    		String s2 = Character.toString(c); //"transformer le char en string pour pouvoir le concaténer après avec ma fonction concatNbre
     
    		String s3 = concatNbre(nbre-1, s2); //j'ai enlevé 1 car sinon ca faisait 5 a au lieu de 4
     
    		//remplacer les 2 premiers char par la chaine concaténée
    		sb.replace(position-1,position+1, s3);
    		System.out.println(sb);
     
     
     
    	}
    }
    ce qui donne : "aaaabc". J'ai pas cherché plus, j'ai pas cherché à modifier la chaine ni rien, mais je te laisse tester. Etant débutante, j'ai pas cherché à savoir si ce code prend beaucoup de place ni rien, mais j'ai juste essayé de comprendre le fonctionnement, car je ne m'y connais pas trop ^^
    Pour la fonction extraire nombre je l'ai trouvé sur internet et j'ai essayé d'en comprendre le fonctionnement. Je t'invite à faire de même en testant plusieurs trucs.
    Je sais pas du tout si j'ai bon, mais voilà je me suis amusée à m'entrainer et surtout apprendre comment ca fonctionne tout ca.
    Bon laisse tomber ca marche pas. Je vais plancher dessus cet aprem XD

Discussions similaires

  1. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  2. Réponses: 7
    Dernier message: 17/09/2005, 23h38
  3. Récuperer un nombre dans une chaine de caractère
    Par ColonelHati dans le forum C
    Réponses: 4
    Dernier message: 27/04/2005, 14h50
  4. [VB.NET] Recherche dans une chaine de caractères
    Par Pleymo dans le forum Windows Forms
    Réponses: 12
    Dernier message: 09/04/2005, 10h25
  5. [C#] Une variable dans une chaine de caractères...
    Par GlorfindelHebril dans le forum Windows Forms
    Réponses: 9
    Dernier message: 31/03/2005, 14h30

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