我对分隔符有些麻烦

时间:2012-05-04 22:33:47

标签: java java.util.scanner runtime-error

    import java.util.*;
    import java.io.*;
    import java.*;          

    public class b {

   static void lireBddParcs(String nomFichier) throws IOException
    {
        LinkedHashMap parcMap = new LinkedHashMap<Parc,Collection<Manege>> ();
        boolean existeFichier = true;        
        FileReader fr = null;

        try
        {
            fr = new FileReader (nomFichier);
        }        
        catch(java.io.FileNotFoundException erreur)
        {
            System.out.println("Probleme rencontree a l'ouverture du fichier" + nomFichier);
            existeFichier = false;
        }        
        if (existeFichier)
        {
            Scanner scan = new Scanner(nomFichier).useDelimiter("\t");        
            while (scan.hasNextLine())
            {        
                   String nom = scan.next();
                   String ville = scan.next();
                   String etat = scan.next();
                   Parc p = new Parc(nom, ville, etat);
                   parcMap.put(p, null);        
            }
            scan.close();        
        }
    }

        public static void main(String[] args)  throws IOException
        {
          lireBddParcs("parcs.txt");        
        }
    }

parc.txt包含:

Great America   Chicago Illinois
Magic mountain  Los Ageles  Californie
Six Flags over Georgia  Atlanta Georgie
Darien Lake Buffalo New York
La Ronde    Montreal    Quebec
The Great Escape    Lake Georges    New York
Six Flags New Orleans   New Orleans Louisiane
Elitch Gardens  Denver  Colorado
Six Flags over Texas    Arlington   Texas
Six Flags New England   Springfield Massachusetts
Six Flags America   Washington  D.C.
Great Adventure Jackson New Jersey

我明白了:

--------------------Configuration: <Default>--------------------
Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:907)
    at java.util.Scanner.next(Scanner.java:1416)
    at b.lireBddParcs(b.java:54)
    at b.main(b.java:94)

我一直在尝试将程序修复3个小时。而上帝,我是愚蠢的。我不知道这个程序有什么问题!

1 个答案:

答案 0 :(得分:0)

您传入的文件名为String而不是File对象本身,因此您的所有扫描程序都是“扫描”。通过首先从文件String创建文件,然后将其传递到扫描程序来解决此问题。

所以不,

Scanner scan = new Scanner(nomFichier)

而是

Scanner scan = new Scanner(new File(nomFichier))

下次,请对我们要求的问题进行编辑。我们是志愿者,你有责任不理解你的问题并回答它,这是不必要的。