2012-05-08 9 views
1

私はこの形式のファイルを持っています。 50 xxx/70 aaa/90 ccc/スキャナnext()をパラメータとして

プログラムはデフォルトのディレクトリにファイルを保存します。同じディレクトリから読み込もうとしています。しかし、何もスキャンしません...何が間違っていますか?申し訳ありませんプログラムでうまくいきません

私は50に "先行" xxxを "テキスト"に読んで、aPf.insert(先行、テキスト)でこれら2つのものを使用したいと思います。

File file = new File("poznamky.txt"); 
     Scanner scanner = null; 
     int prior; 
     String text; 

     try { 
      scanner = new Scanner(file); 
      scanner.useDelimiter("/"); 

     while (scanner.hasNext()) { 

      prior = scanner.nextInt(); 
      text = scanner.next(); 
      aPf.insert(prior, text); 

} 

} catch (FileNotFoundException e) { 

e.printStackTrace(); 

} 
+0

ああ、私はaPfを作成しました.... –

答えて

2

デリミタ/は正しくエスケープされていないと思います。 \/のように使用して、エスケープしてください。より明確にするために、Escaping a forward slash in a regular expressionを参照してください。

+0

ああ、よく分かりました。それは少しで動作します..しかし、私はまだ問題があります..しかし、私はそれを動作させるためにあなたが少し助けてみました:) –

+0

それは助けて嬉しい。他の問題をお知らせください、私たちはあなたを助けることができます。 – raddykrish

0

私はあなたがこれについて行くかもしれない2つの方法があると思います。最初は、reset()を使って区切り文字をリセットしています。だから、私が言うことは、デフォルトの区切り文字 '' for nextIntを使って、次の呼び出しのためにuseDelimiter( '/')を呼ぶことです。次に、scanner.reset()を呼び出します。

別の方法として、/区切り文字に基づいて文字列を取得する方法があります。その文字列を次の区切り文字としてスペースに基づいてさらに分割します。たぶんこれを達成するためにStringTokenizerを使用します。

+0

ありがとう!私はそれとはかなり違ったことをしましたが、私は文字列トークンが何であるか知りませんでした。新しいものを学びました。 –

関連する問題