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 une chaîne de caractère ne contient que des numéros.


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 24
    Points
    24
    Par défaut Tester si une chaîne de caractère ne contient que des numéros.
    bonjour tous le monde ,

    voici mon probème.

    je dois lire des numéros et s'il y a une lettre je dois envoyer un message d'erreur.

    Par exemple, si je lis 36T086, je dois retourner ceci.

    "Numéro de SMS 36T086 non valide - traitement abandonné".

    Est-ce qu'il y a une méthode, comme en vb, genre isnumeric? ou faut-il que je fasse une boucle pour vérifier chaque caractère.

    Merci d'avance pour vos réponses.

  2. #2
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Ce qui se rapproche le plus est peut être Integer.parseInt, à adapter.

    Et pour ta culture générale Java... Comment utiliser la Javadoc ?
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    salut merci de ta réponse,



    Je vais essayer ce que tu m'a dit, mais d'abord je voudrais esayer ce que je viens de voir sur le net.
    Il y a une méthode isDigit() qui indique si le caractère correspond à un chiffre ou pas.

    Maintenant mon problème est que cette méthode prend en paramètre un caractère alors que moi depuis mon fichier je lis des String...
    Je pense que je dois "couper" ma chaîne et vérifier caractère par caractère
    est-ce que je suis dans la bonne voie?

    merci

  4. #4
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    Au niveau où tu en es la bonne voie est de prendre le temps de lire la documentation, et de faire des petits programmes expérimentaux.

    Les bases : Penser en Java, et The Java Tutorials, avec bien sûr les javadocs tel que je te l'ai indiqué précédemment.
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  5. #5
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    salut

    Si tu ne veut pas utiliser IsDigit()
    voici une façon parmi d'autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    String chaine = "34944Fte4";
    int j = 0;
    for (int i = 0 ; i < chaine.length(); i++)
    {
           if ( Character.toUpperCase (chaine.charAt(i)) >= 'A' && Character.toUpperCase (chaine.charAt(i)) <= 'Z')
          {
    	    j++;
          }
    }
    if (j != 0)
    	System.out.println("La chaine contient  " + j + "  lettres" );
    else
    System.out.println("La chaine ne contient que des chiffres");
    Bonne Chance
    --<< Il n y a que les clous qui ne plantent pas >>---

  6. #6
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Qui marche pas avec les lettres accentués...

    Ce serait mieux de tester l'intervalle numérique...

  7. #7
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    parseInt() serait une solution plus simple quand même !
    On pourrait peut-être privilégier parseLong() si on doit traiter avec de très grande chaine, voir une expression régulière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (str.matches("\\d+")) // 1 chiffre décimal ou plus
    a++

  8. #8
    Membre actif Avatar de Seb19
    Homme Profil pro
    Concepteur SOA
    Inscrit en
    Septembre 2005
    Messages
    217
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Concepteur SOA

    Informations forums :
    Inscription : Septembre 2005
    Messages : 217
    Points : 292
    Points
    292
    Par défaut
    Salut, avec un parseInt, tu n'auras aucun problème des caractères accentués et tu n'auras pas à créer de boucle pour parcourir la chaine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class test {
     
    	public static void main(String[] args) {
    		String sms = "363é456";
    		try {
    			int numSms = Integer.parseInt(sms);
    			System.out.println("La chaine correspond à un numéro de SMS");
    		} catch (NumberFormatException e){
    			System.out.println("La chaine contient au moins un caractère");
    		}
    	}
    }
    Celui qui pose une question risque cinq minutes d'avoir l'air bête.
    Celui qui ne pose pas de question restera bête toute sa vie.(proverbe chinois)

  9. #9
    Membre à l'essai
    Inscrit en
    Mars 2008
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 26
    Points : 24
    Points
    24
    Par défaut
    Merci beaucoup pour toutes vos réponses...

    j'ai utiliser parseInt() et ca marche

    A bientôt et encore merci d'avoir répondu aussi rapidement.

    Un débutant sympa

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/09/2012, 13h38
  2. Réponses: 3
    Dernier message: 27/12/2011, 13h54
  3. Réponses: 0
    Dernier message: 23/10/2011, 01h17
  4. Réponses: 4
    Dernier message: 25/09/2007, 12h59
  5. Réponses: 6
    Dernier message: 14/12/2006, 17h27

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