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

Java Discussion :

Majuscule Minuscule java


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut Majuscule Minuscule java
    Salut a tous
    je suis entrain de programmer un analyseur lexical sous java, j'ai un texte que je le découpe avec la méthode Split et je mets tous le mots dans un tableau tabmot
    j'ai 5 liste (mots clé , separateur operateur identificateur et constante), il cherche chaque mots du tableau dans les 5 liste si il le trouve il me donne le mot le nom de la liste et sa positon
    par exemple Texte : public static void main
    il me donne : public mot clé position 0
    seulement je veux qu'il prend compter des majuscule si il trouve Public il doit m'afficher une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	Map<String, List<String>> listes = new HashMap<>();
    	listes.put("mot clé",a1);
    	listes.put("spérateurs",a2);
    	listes.put("operateurs",a3);
    	listes.put("constante",a7);
    	listes.put("identificateur",a5);
    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
     
    public class ListePosition {
     
    	     private final String nom;
    	     private final int index;
    	     public ListePosition(String nom, int index) {
    	         this.nom=nom;
    	         this.index=index;
    	     }
    	     public String getNomListe() {
    	         return nom;
    	     }
    	     public int getIndexDansLaListe() {
    	         return index;
    	     }
    	     public static Optional<ListePosition> chercher(Map<String, List<String>> map, String mot) {
    	           return map.entrySet()
    	                     .stream()
    	                     .filter(e-> e.getValue().contains(mot))
    	                     .map(e-> new ListePosition(e.getKey(), e.getValue().indexOf(mot)))
    	                     .findFirst();
    	     }
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    	for(String mot : tabmot ) {
    		     Optional<ListePosition> position = ListePosition.chercher(listes, mot);
    		     if ( position.isPresent() ) {
    			position.ifPresent(e-> System.out.printf("Mot %s  trouvé dans la liste %s en position %d%n", mot, e.getNomListe(), e.getIndexDansLaListe()+1)); 
    		     }
    		     else {
    			System.out.println(mot+ " : mot introuvable " );
    		     }}

  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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Salut,

    Ce n'est pas très clair : tu voudrais que si on cherche le mot public et qu'on trouve le mot Public, alors on signale qu'il y a une erreur ? Ou tu veux que si on cherche public, et qu'il y a Public, ça le trouve aussi ?
    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
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut
    Non je veux que si 'il trouve Public il m'affiche une erreur !
    plus clair ma liste des mots clé elle contient (public , static, void ect )
    mon text par exemple public static Public
    il doit m'afficher
    public mot clé position 1
    static mot clé postion 2
    Public mot introuvable
    mon code ne prend pas en compte les majuscule et les minuscule , si il trouve Public ou bien public c'est la même chose

  4. #4
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Non, Collection.contains() et List.indexOf() utilisent equals() (éventuellement hashCode() en plus), qui est sensible à la casse pour String. Donc ton code doit afficher déjà ça. Sauf si tu passe tes mots en minuscule au moment de la lecture dans le fichier : il suffit d'enlever le toLowerCase().
    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.

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2015
    Messages : 136
    Par défaut
    je m'excuse Joel je me suis trempé !
    le mot Public le prend comme identificateur ! meme cas pour Static Void Main
    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
     
    Pattern k = Pattern.compile("^[A-Za-z][A-Za-z0-9]*");
     
    		for(int i=0; i<tabmot.length;i++){
    		if (k.matcher(tabmot[i]).matches()) {
    			if((a1.contains(tabmot[i]))==false 
    					&& (a2.contains(tabmot[i]))==false 
    					&& (a3.contains(tabmot[i]))==false 
    					&& (a7.contains(tabmot[i]))==false
    )			
    			a5.add(tabmot[i]);
     
    		}
     
    		}System.out.println( "les identificateurs sont :");
    		for( int i  = 0; i < a5.size(); i++)
    	    {
    		      System.out.println( a5.get(i));
    		    }

  6. #6
    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 : 55
    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
    Billets dans le blog
    2
    Par défaut
    Ok. Forcément, s'il y a une liste qui contient le mot public et une autre qui contient le mot Public, il va trouver Public dans le seconde liste, même si public est dans la première liste.
    Et là on ne peut pas faire grand chose. Parce que si le mot cherché est Public, il n'y a rien qui qualifie le mot et qui dit que même si on le trouve dans la seconde, on devrait le trouver dans la première avec une erreur.

    On peut faire :
    1. on cherche le mot (Public) : il le trouve dans la seconde liste
    2. puis, si !mot.equals(mot.toLowerCase()) (donc le mot cherché n'est pas qu'en minuscule) on cherche le mot en minuscule (chercher(map, mot.toLowerCase()), il le trouve dans la première liste
    3. S'il le trouve dans les deux listes, alors juste indiqué : on l'a trouvé avec la casse exacte dans la liste 2, mais on l'a aussi trouvé en minuscule dans la liste 1.


    Mais on ne peut pas dire que c'est une erreur : c'est une erreur ici dans le contexte public static void... mais déterminer ça automatiquement est beaucoup plus complexe qu'il n'y parait. On peut simplifier par des heuristiques, genre dire si tous les mots de la ligne sont dans la liste des mots-clefs, sauf 1, alors ce dernier est une erreur... et encore, cela ne fonctionne pas à tout les cas : public class Public {} : pourquoi Public serait une erreur ?

    Maintenant, il faut voir quel est le but du programme globalement. Est-ce que le but est de vérifier du code Java ?
    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.

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

Discussions similaires

  1. Expression en majuscule minuscule
    Par auriolbeach dans le forum VBA Access
    Réponses: 6
    Dernier message: 23/08/2019, 09h47
  2. Majuscule minuscule en Java
    Par user2000 dans le forum Android
    Réponses: 3
    Dernier message: 06/05/2011, 11h40
  3. [Débutant(e)] écriture Majuscule Minuscule dans String
    Par florantine dans le forum Langage
    Réponses: 4
    Dernier message: 23/11/2005, 17h34
  4. Majuscules - minuscules dans les requêtes
    Par calogerogigante dans le forum Requêtes
    Réponses: 11
    Dernier message: 25/10/2005, 11h36
  5. recherche Xpath: problème de casse (majuscule/minuscule)
    Par alexandre54 dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 29/07/2003, 10h42

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