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 :

Problème : tokenizer.nextToken


Sujet :

avec Java

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut Problème : tokenizer.nextToken
    Bonsoir,

    Je suis débutant en Java et j'ai une erreur de compilation que je n'arrive pas à résoudre.

    Le compilateur m'indique l'erreur suivante :
    java.util.NoSuchElementException
    at java.util.StringTokenizer.nextToken(Unknown Source)
    at Point.<init>(Point.java:44)
    Voici la partie du code contenant "StringTokenizer":
    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
     
     public Point(String line){
     
        this.line = line;
        double feature=0.0;
     
        StringTokenizer token = new StringTokenizer(line, ",");
        featureSet = new double[k];
        try{
     
          for(int j =0; j< k; j++){
    	 featureSet[j] = Double.parseDouble(token.nextToken());
           }
        }
         catch(Exception e){e.printStackTrace();}
     
        if(token.hasMoreTokens()){
          originLabel = token.nextToken();
            }
        else{originLabel = "Na"; }
        groupNo = Integer.MAX_VALUE;
      }
    Pouvez-vous m'aider?
    Merci beaucoup

  2. #2
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    bonjour,

    c'est quoi ton k? car pour moi c'est ta boucle for, il parcourt jusqu'à i < k et ton next.token ne doit pas aller jusqu'à k donc au moment ou tu as i = 5 par exemple token.nextToken() n'a rien d'où Unknown Source, source inconnue.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  3. #3
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Chui d'accord, et si mes souvenirs sont bon plutôt qu'un for pour parcourir tous tes token t'as une method hasMoreToken() un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    StringTokenizer st = new StringTokenizer(str, ",");
    while (st.hasMoreTokens()) 
    {
         //traitement
    }
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

  4. #4
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    J'ai trouvé quelques exemples qui devraient t'aider :
    http://www.jexamples.com/srchRes/jav....hasMoreTokens
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    On notera au passage qu'il n'y a aucune erreur de compilation : le compilateur est passé sans problème et n'a fait aucune erreur.

    L'erreur apparaît quand on essaie d'exécuter le programme, pas avant : pas un problème de compilation.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par XxArchangexX Voir le message
    bonjour,

    c'est quoi ton k?
    k est connu déjà dans mon code. Il est fixé à 41.

  7. #7
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Points : 2 323
    Points
    2 323
    Par défaut
    Pour rebondir, je trouve sa normal, le compilateur ne connait pas la chaîne, il ne peut pas pré-tester si la longeur de la chaîne est inférieure au critère d'arrêt de la boucle for.

    Donc si un string que tu "tokenize" fait moins de 41, ton application plante
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  8. #8
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Citation Envoyé par mastere.info Voir le message
    k est connu déjà dans mon code. Il est fixé à 41.
    Et il est fixé comment?
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    Citation Envoyé par Doopeijii Voir le message
    Et il est fixé comment?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    public class Point {
     
      protected String givenLabel, line, originLabel;
      protected int groupNo;
     
      protected double[] featureSet;
      Point originPoint=null;
      public static int k = 41;

  10. #10
    Membre averti Avatar de Doopeijii
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Orne (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2012
    Messages : 215
    Points : 323
    Points
    323
    Par défaut
    Moi je vois plutôt un truc dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    while(token.hasMoreElements()){
        featureSet.addLast(token.nextToken());
    }
    Je sais pas si c'est correcte, je fais pas beaucoup de JAVA j'ai juste deux trois notions
    Puisque sinon comme l'a dit XxArchangexX tu vas chercher plus d'éléments que tu n'en as ! Ce qui explique l'erreur noSuchElement.
    Un petit n'est pas de trop si le message est utile

    "Vous êtes très nombreux dans votre cas? J'ai jamais pensé que les cons étaient en minorité..."

  11. #11
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Je pense que la question était plutôt "et pourquoi on a décidé de mettre 41 et pas autre chose, genre 28, 57 ou 5394537 ?"

    Ce à quoi la réponse est sans doute :

    "Ça a été décidé par erreur. La bonne valeur est autre chose que 41."

    Mais bon, peu importe. Comme dit Doopeijii, il vaut mieux effacer cette valeur 41 de tout le programme. À la place, faire une boucle, qui lit autant de valeur qu'il y en a, au lieu de 41 valeurs.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Problème de 'token'
    Par 4Adjax dans le forum C++
    Réponses: 1
    Dernier message: 15/12/2009, 17h08
  2. Réponses: 1
    Dernier message: 21/03/2009, 17h04
  3. Problème de Token
    Par maserati dans le forum C++
    Réponses: 1
    Dernier message: 24/11/2008, 10h07
  4. problème avec nextToken()
    Par soujava dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 21/03/2008, 16h21
  5. Problème de compilation (parse error before '*' token)
    Par moon93 dans le forum Autres éditeurs
    Réponses: 8
    Dernier message: 11/06/2006, 23h39

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