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 :

tester si la saisie est de type String


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut tester si la saisie est de type String
    Bonjour à tous,
    je veux tester si la valeur saisi au clavier est de type String "ne contient aucune valeur numérique"

    j'ai fais ce code pour conjuger les verbes qui finissent par er

    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
     
    public class Conjugaison 
    {
    	String verbe;
    	String verbeSansER;
    	public Conjugaison()
    	{
    		String pron [] =  {"Je","tu","il/elle","nous","vous","ils/elles"};
    		String terminaison [] ={"e","es","e","ons","ez","ent"};
    		System.out.println("donnez un verbe regulier du premier groupe  : ");
    		boolean isString ;
     
     
    		do{ 
    			isString =true;
    		    Scanner s = new Scanner(System.in);
    		    try{
    		        verbe = s.nextLine();
     
    		        }catch (InputMismatchException e)
    		             {
    			          System.out.println("Veullez saisir un verbe SVP !");
    			          isString =false;
    		             }
    		   }while (isString !=true);
     
     
    		String v =verbe.toUpperCase();
            System.out.println(v);
    		verbeSansER = verbe.replace(verbe.charAt(verbe.length()-1),' ');
    		for(int i=0;i<pron.length;i++)
    		{ 
    			verbeSansER = verbe.replaceFirst("er", terminaison[i]);
    			System.out.println(pron[i]+" "+verbeSansER);
    		}
    	}
     
    }
    mais le probleme c'est même quand je saisi des chiffres ça me donne le chiffre + "er"

    je voudrais savoir si ont peut en java tester de manière simple les types des variables prilitifs ou il faut passer par les regex ???
    mérci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Un chiffre est un caractère comme un autre ...

    Tu peux soit passer par une expression régulière mais tu peux également vérifier caractère par caractère s'il appartient à une tranche données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String s = ""; // Saisie
    for (int i = 0; i < s.length(); i++) {
      char c = s.charAt(i);
      if (c < 'a' || c > 'z') {
        // Le (i+1)-ème caractère n'appartient pas à la tranche a-z
      }
    }
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  3. #3
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Et tu peux aller voir là pour d'autres propositions de solutions : ici
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  4. #4
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut
    merci pour la réponse les gars
    j'ai tester le code avec le chartAt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Scanner s = new Scanner(System.in);
    		 verbe = s.next();
    		      for (int i = 0; i < verbe.length(); i++) 
    		      {
    		        char c = verbe.charAt(i);
    		        if (c < 'a' || c > 'z')
    		       do{ 	
    		          System.out.print("saisi numerique !! saisir un verbe qui se termine par er : ");
    			      verbe = s.next();
    		        }while(c < 'a' || c > 'z');
    		    }
    mais je pense que je ne sort pas de la boucle
    si je met le do avant le for ma variable C n'est pas dans le while
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     while(c < 'a' || c > 'z');

  5. #5
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Ta boucle while doit inclure la boucle for et non l'inverse.

    Utilise un booléen pour stocker la validité de la saisie et sors de la boucle for dès que la saisie n'est pas valide (ajoute le aux conditions)
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    ça fait peut être un peux masse pour tué une mouche mais bon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Pattern.matches("[a-zA-Z]*", "manger"); // true
    Pattern.matches("[a-zA-Z]*", "1manger"); // false

  7. #7
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    La question c'était plus comment faire sans

    Sinon je préfère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !Pattern.compile("[0-9]").matcher(/*chaine a tester */).find()
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    ca reviens au même vue que

    Pattern.matches fait exactement ce que tu donne comme code.

    quand a l’expression régulier je trouve que qu'il est plus lisible de dire que l'on cherche une chaîne sans nombre (vue que c'est ce que l'on cherche) après ton expression revient a l'inverse et sera peut être un peux plus performante

  9. #9
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Pour ma culture, je continue le débat ^^ (même si le sujet est résolu au final)


    Celui-ci vérifie bien qu'une chaine est sans nombre (tout les caractères spéciaux n'ont aucune incidence)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    !Pattern.compile("[0-9]").matcher(/*chaine a tester */).find()
    Celui-ci vérifie qu'une chaine ne contient que des lettres (tout les caractères spéciaux font que ça ne matche pas)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Pattern.matches("[a-zA-Z]*", /* chaine a tester */)
    Ces deux expressions ne font donc pas la même chose de toute façon. Enfin pas "exactement" la même chose si ? L'une est plus intrusive que l'autre.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Points : 419
    Points
    419
    Par défaut
    oui effectivement mais je ne connais pas de verbe avec un @ au milieux c'est pour ca que j'avais mis uniquement les lettre.

    il est vrais que je n'ai pas fait attention a cette partie quand j'ai regardé [0-9]

  11. #11
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par rolfone Voir le message
    oui effectivement mais je ne connais pas de verbe avec un @ au milieux c'est pour ca que j'avais mis uniquement les lettre.

    il est vrais que je n'ai pas fait attention a cette partie quand j'ai regardé [0-9]
    Il est vrai que dans ce cas d'utilisation, la deuxième solution est plus applicable. Elle limite encore plus les possibilités d'erreurs de frappe.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  12. #12
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    Citation Envoyé par abj8077 Voir le message
    je veux tester si la valeur saisi au clavier est de type String "ne contient aucune valeur numérique"
    Et les accents ?
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut
    salut,
    bon j'ai utilisé les regex en accéptant qur les lettres et en forçant la fin du mot par " er " les verbes du premier groupe.

    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
     
    import java.util.InputMismatchException;
    import java.util.Scanner;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
     
    import org.omg.CosNaming.IstringHelper;
    public class ConjugaisonBis
    {
    	String verbe;
    	String verbeSansER;
    	public ConjugaisonBis()
    	{
    		String pron [] =  {"Je","tu","il/elle","nous","vous","ils/elles"};
    		String terminaison [] ={"e","es","e","ons","ez","ent"};
    		System.out.println("donnez un verbe regulier du premier groupe  : ");
    		boolean isString ;
     
    		Scanner s =new Scanner(System.in);
     
     
    		Pattern patBis = Pattern.compile("^[a-zA-Z]+(ER|er|eR|Er)");
    		do{
    			isString =true;
    			verbe = s.next();
    			Matcher m =patBis.matcher(verbe);
    			if(!m.find())
    			{
    				System.out.print("Saisi non valider !! Veuillez réessayer : ");
    				isString = false;
    			}
     
    		  }while (isString ==false);
     
    		for(int i=0;i<pron.length;i++)
    		{ 
    			verbeSansER = verbe.replaceFirst("er", terminaison[i]);
    			System.out.println(pron[i]+" "+verbeSansER);
    		}
     
         }
    }
    ça a l'air pas mal .
    si qu'un peut donner son avis sur ce code .
    mais ma première question reste toujours posée : c'est quoi la manière la plus simple en java de tester le type d'une variable primitif :
    y'a pas genre IsNNumerique comme dans d'autres langages.
    et mérçi encore pour votre participation

  14. #14
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    J'enlèverai le caractère '^' au début et j'utiliserai la méthode matches plutôt que find.

    La manière la plus simple et la plus rapide à coder, reste les expressions régulières : simple, puissant, rapide.
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  15. #15
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut
    le caractère '^' c'est pour forcer ???

  16. #16
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par abj8077 Voir le message
    le caractère '^' c'est pour forcer ???
    Le caractère '^' c'est pour signaler le début de ta chaîne plutôt. Et n'oublie pas le signe * aussi.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  17. #17
    Rédacteur/Modérateur
    Avatar de Logan Mauzaize
    Homme Profil pro
    Architecte technique
    Inscrit en
    Août 2005
    Messages
    2 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Transports

    Informations forums :
    Inscription : Août 2005
    Messages : 2 894
    Points : 7 083
    Points
    7 083
    Par défaut
    J'utiliserai également le flag case insensitive

    pour remplacer par "[a-z]+er"
    Java : Cours et tutoriels - FAQ - Java SE 8 API - Programmation concurrente
    Ceylon : Installation - Concepts de base - Typage - Appels et arguments

    ECM = Exemple(reproduit le problème) Complet (code compilable) Minimal (ne postez pas votre application !)
    Une solution vous convient ? N'oubliez pas le tag
    Signature par pitipoisson

  18. #18
    Membre du Club
    Inscrit en
    Septembre 2004
    Messages
    96
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 96
    Points : 58
    Points
    58
    Par défaut
    ok ,
    je remérçi les participants.

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

Discussions similaires

  1. tester si la saisie est un entier ou non
    Par sisiniya dans le forum C
    Réponses: 3
    Dernier message: 24/03/2010, 11h12
  2. tester si un argument est de type entier
    Par freestyler dans le forum Shell et commandes GNU
    Réponses: 18
    Dernier message: 06/12/2007, 15h39
  3. tester si un fichier est de type excel
    Par mitje dans le forum Langage
    Réponses: 4
    Dernier message: 20/09/2006, 02h45
  4. Comment vérifier que la valeur saisie est de type numérique ?
    Par prince_antonio dans le forum ASP.NET
    Réponses: 16
    Dernier message: 20/07/2006, 12h57
  5. comment tester si une variable est de type indifined
    Par amelhog dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/08/2005, 09h32

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