私は

2012-05-04 7 views
-4
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 

が、私はこれを取得:私は良い3時間のプログラムを修正しようとしている

--------------------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) 

。そして、私はダムです。私は何がプログラムに間違っているのか分からない!

+6

あなたは、私たちのためにその空白を少し取り除くことができると思いますか?コードを読んで理解することを簡単にしたいと思うなら、通常は感謝しています。だから、これを行うのがあなたの利点です。 –

+0

また、コード内にいくつかの 'System.out.println(...)'ステートメントを入れて、あなたのコードがどんなStringsを上回っているのか、特に例外がスローされる場所の直前を調べてください。 * hasNextXXX()はそれに続く 'nextXXX()'と一致するはずで、1対1でなければなりません一種の取引。 –

+0

あなたは空のライン賞を受賞しています。 java.util.Scanner.next(Scanner.java:1416)でスレッド内 –

答えて

0

あなたはFileオブジェクト自体ではなく、ファイル名Stringを渡しているので、Scannerはすべて「スキャン中」です。最初にファイルStringからFileを作成し、それをScannerに渡すことで修正してください。

そうではない、

Scanner scan = new Scanner(nomFichier) 

ではなく、むしろ

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

そして次回は、私たちが要求されてきたあなたの質問を編集してください。私たちはボランティアであり、あなたの質問を理解して回答することを不必要に困難にしないようにするのはあなたの責任です。

+0

申し訳ありませんが、空白を取り除く方法を知りませんでした。 – Questions

+0

* "どのように" *?! –

+0

スキャナsc =新しいスキャナ(新しいファイル( "nomFichier")) – Questions