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 :

Problème avec java.util.Scanner.


Sujet :

Langage Java

  1. #1
    Membre confirmé Avatar de Andarus
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 455
    Points
    455
    Par défaut Problème avec java.util.Scanner.
    Le programme suivant me renvoie une exception mais je n'en comprends pas la cause.

    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
    import java.io.File;
    import java.util.Scanner;
     
    public class parseeTest 
    {
    	public static void main(String[] args) 
    	{
    		File file = new File("./testScanner.txt");
    		try 
    		{
    			Scanner sc = new Scanner(file);
     
    			double test = Double.parseDouble(sc.next());
    			System.out.println(test);
    			double test2 = sc.nextDouble();
    			System.out.println(test2);
    		} 
    		catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    le fichier a parser :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .64000E+02   .39000E+02   .77000E+02   .21500E+02   .43250E+00
    l'exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    java.util.InputMismatchException
    	at java.util.Scanner.throwFor(Unknown Source)
    	at java.util.Scanner.next(Unknown Source)
    	at java.util.Scanner.nextDouble(Unknown Source)
    	at com.thales.test.parseeTest.main(parseeTest.java:21)
    Ce code semblait bien se comporter sous java 1.7 mais lève une exception sous java 1.7_02.

    Merci d'avance.

  2. #2
    Membre confirmé Avatar de Andarus
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Novembre 2008
    Messages : 137
    Points : 455
    Points
    455
    Par défaut
    Après quelque test il semble que ce code se comporte correctement sur windows 32 bit mais qu'il lève l'exception sur windows 64 bit lorsqu'il est excecuté sur une jvm oracle 32 ou 64 bit.

    Je ne vois vraiment pas où se trouve mon erreur .

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Contrairement à Double.parseDouble(), un Scanner cherche à parser selon une Locale précise, et si ça ne correspond pas il lance cette exception.

    Si on ne lui indique pas de Locale précise il va prendre la Locale par défaut, ce qui dans ton cas :
    - est l'anglais sur le windows 32 bits.
    - est probablement le français sur le windows 64 bits.

    En français, le séparateur décimal est une virgule, pas un point. D'où l'erreur.

    Correction : ajouter cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sc.useLocale(Locale.US);

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/12/2009, 22h27
  2. Problème avec java.util.Scanner
    Par fab56 dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 16/09/2009, 21h25
  3. problème avec java.util.zip.Inflater
    Par felix79 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 11/06/2007, 15h02
  4. Problème avec java.util.List
    Par alphonse62 dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 11/06/2007, 11h03
  5. probleme avec java.util.Scanner
    Par d-a-v-e dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 04/05/2006, 22h08

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