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

Langage Java Discussion :

String et méthode


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut String et méthode
    Bonjour,

    J'essaie en vain d'écrire une méthode qui retournerait ces valeurs :
    — true : si la chaîne contient uniquement des caractères dans l’intervalle [cMin, cMax]
    — false : si la chaîne inclus au moins un caractère qui n’est pas dans l’intervalle [cMin, cMax]

    En fait, je veux vérifier que ma chaîne de caractère ne contient que des lettres de l'alphabet en utilisant seulement les méthodes suivantes: charAt() et length().

    Auriez-vous une solution?

    Merci!!!

  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,

    Si cMIn et cMax sont des caractères (char), il suffit de comparer : si cMin<=c && c<=cMax alors c appartient à l'intervalle. Et c = string.charAt(i) avec i variant de 0 à string.length-1, tout simplement.
    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
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut
    Merci!

    Que veut dire ton c dans cMin<=c && c<=cMax?
    Merci.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut
    Oops, je suis vraiment à l'ouest, tu as expliqué comment on obtient c juste après lol.
    Ne tiens pas compte de ma précédente demande...

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 4
    Par défaut
    J'ai mal compris ce que tu m'as expliqué. Ca m'affiche n résultats en fonction de n caractères que j'entre...
    Je colle ici mon code pour avoir de l'aide svp:

    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
    public static void main (String[] args) {
            String chaine;
            char cMin;
            char cMax;
            int longueur;        
            cMin='a';
            cMax='z';
     
            System.out.println("Chaine?");
            chaine=Clavier.lireString();
            for ( int i = 0; i < chaine.length(); i++ ) {
                if ( chaine.charAt( i ) >=cMin && chaine.charAt( i )<=cMax  ) {
                    System.out.println("true");
                }else{
                    System.out.println("false");
                }
            }
        } // main

  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
    Tout est dans la description :
    Citation Envoyé par salimoush Voir le message
    une méthode qui retournerait ces valeurs :
    — true : si la chaîne contient uniquement des caractères dans l’intervalle [cMin, cMax]
    — false : si la chaîne inclus au moins un caractère qui n’est pas dans l’intervalle [cMin, cMax]
    La fonction est globable : on a soit true soit false, alors qu'afficher true ou false pour chaque caractère, affiche forcément plusieurs fois true ou false. La fonction vaut donc : caractère 0 est dans [cMin, cMax] et caractère 1 est dans [cMin, cMax] et caractère 3 est dans [cMin, cMax] et ... Bien sûr, on ne peut pas faire autant de if qu'il y a de caractères : on va faire ça dans une boucle, et faire que chaque test fait dans chaque itération se cumule pour n'avoir qu'une seule valeur true ou false.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    boolean resultat=true;
    for (int i = 0; i < s.length(); i++) {
    	char c = s.charAt(i);
    	resultat &= (c >= cMin && c <= cMax); // cumule avec &=
    }
    System.out.println( resultat );
    Ensuite, on peut simplifier. On sait que pour un et, il suffit qu'un seul test soit faux pour que la combinaison et de tous les tests est forcément false (en algère booléenne : a & false est false, donc a & b & false est false, a & b & c & false est false, etc.

    Donc il suffit de faire :

    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
    	public static boolean containsOnly(String s, char cMin, char cMax) {
    		if ( s.length()==0 ) {
    		    // la chaine est vide (ou null), alors il n'y a aucun caractère dans l'intervalle, 
    			// mais on ne peut pas dire non plus qu'il y a au moins caractère qui n'est pas dans l'intervalle
    			// il ne faudrait pas appeler cette méthode avec une chaine vide (ou null, mais dans ce cas ça va faire une NullPointerException)
    			// on peut retourner n'importe quoi comme valeur, aucune des deux n'a de sens
    			// on va soulever une exception pour dire qu'on ne devrait pas appeler cette méthode dans ce cas
    			throw new IllegalArgumentException("String is empty");
    		}
    		else if ( cMin>cMax ) {
    			// l'intervalle est incorrect, on soulève une exception
    			throw new IllegalArgumentException("cMin > cMax");
    		}
    		else {
    			for (int i = 0; i < s.length(); i++) {
    				char c = s.charAt(i);
    				if (c < cMin || c > cMax) { // le caractère n'est pas dans l'intervalle
    					return false; // alors on a au moins un caractère qui n'est pas dans l'intervalle, donc le résultat est false
    			        }
    			}
    			return true; // tous les caractères étaient forcément dans l'intervalle alors le résultat est true
    		}
    	}
    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.

Discussions similaires

  1. Initialiser un String, quelle méthode ?
    Par Christophe Genolini dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 13/06/2013, 16h34
  2. Réponses: 3
    Dernier message: 05/10/2006, 18h52
  3. [C#2] DataTable.Select, méthode (String)
    Par Leesox dans le forum Accès aux données
    Réponses: 2
    Dernier message: 15/08/2006, 19h40
  4. appeller une méthode dans le nom est dans un String
    Par fxjtarga dans le forum Langage
    Réponses: 2
    Dernier message: 24/02/2006, 16h06
  5. Réponses: 16
    Dernier message: 19/05/2005, 16h20

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