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

Collection et Stream Java Discussion :

Problème 'Scanner' , lire un fichier .txt


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut Problème 'Scanner' , lire un fichier .txt
    Bonjour à tous,

    J'ai un souci avec la fonction scanner de java.

    Je désire exploiter les données d'un document texte (situé dans C:\data.txt) de la forme:

    Puzzle 1(4solutions)
    A -4 1 -3 2
    B -2 4 3 -2
    C -3 1 -2 4
    D 3 2 -1 -4
    E 2 -1 4 -3
    F -4 1 3 -2
    G -3 -2 2 1
    H -1 -4 2 3
    I -2 1 2 -1
    qui contient donc une première ligne qui sert de titre, ainsi que 36 chiffres et 9 lettres.

    Chaque ligne correspond à une Piece (une Piece se construit à l'aide de 4 int, et une String: Piece(int,int,int,int,String) ). Je voudrai donc remplir un tableau de Piece en utilisant les données de ce fichier.
    Voici le code que j'ai:

    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
    public void lire() throws FileNotFoundException{
     
     
    		Scanner scanner=new Scanner(new File("C:\\data.txt"));
     
    		// On boucle sur chaque champ detecté
    		int i = 0;
    		int j = 0;
    		int[] tab = new int[36];
    		String[] lines = new String[10];
    		while (scanner.hasNextLine() && i<10) {
    		    String line = scanner.nextLine();
    		      while (scanner.hasNextInt()) {
    		    	long x = scanner.nextInt();
    		    	tab[j] = scanner.nextInt();
    		    	j++;
    		    }
     
    		    lines[i] = line;
    		    i++;
    		}
     
    		scanner.close();
     
    	 //exemple pour la ligne 1: A -4  1 -3  2
    		String input = lines[1];
    	     Scanner s = new Scanner(input);
    	     System.out.println(s.nextInt()); 
                 //ici je voudrai avoir:
                 //pieces[1] = new Piece(-4, 1, -3, 2, "A");
    	     s.close(); 
    	}
    Or, Eclipse me renvoi l'erreur suivante:

    Exception in thread "main" java.util.InputMismatchException
    at java.util.Scanner.throwFor(Unknown Source)
    at java.util.Scanner.next(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at java.util.Scanner.nextInt(Unknown Source)
    at puzzle.Pool.lire(Pool.java:102)
    at puzzle.testPool.main(testPool.java:24)

    J'ai cru comprendre que c'était du au fait que je veux récupérer à la fois des lettres et des chiffres mais j'ai du mal à comprendre comment faire.

    Si quelqu'un a une idée

    Merci d'avance !

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 73
    Par défaut
    Bonjour,

    Tu testes s'il existe un prochain entier (hasNextInt()). Par contre, tu fais deux appels à scanner.nextInt() et c'est ça qui plante. Il suffit juste de stocker sa valeur dans une variable et de l'exploiter par la suite.

    Bon code

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 13
    Par défaut
    Merci pour le coup de main, j'ai trouvé un autre moyen finalement !

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

Discussions similaires

  1. problème pour lire un fichier wav
    Par r0d dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 03/05/2007, 19h56
  2. [C#] Problème pour lire un fichier xml
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/06/2006, 23h12
  3. Lire un fichier .TXT en donnant une URL
    Par Matt2094 dans le forum Langage
    Réponses: 9
    Dernier message: 03/05/2006, 14h35
  4. Lire un fichier txt par http (C sous Linux)
    Par sleg dans le forum Réseau
    Réponses: 4
    Dernier message: 18/10/2005, 11h07
  5. Réponses: 4
    Dernier message: 05/10/2004, 17h11

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