2017-01-18 5 views
1

ファイルに文字列が表示される回数をカウントしようとしています。私は "A、E、I、O、U"がその順番で正確に現れる回数を見つけたいと思っています。ここにテキストファイルがあります:BufferedReaderなしでファイルに文字セットが表示される回数をカウントします。

 
AEIOU aeiou baeiboeu bbbaaaaaa beaeiou caeuoi ajejijoju aeioo 
aeiOu ma me mi mo mu 
take it OUT! 

私は、メソッドがファイル内に何回あるかを返すようにします。どのように私はこれを行うことについて行くことができるかについての任意のアイデアですか?キャッチフレーズはBufferedReaderを使わずにこれをやりたいです。私はちょうどScannerを使用してファイルを読むことができます。これを行う方法はありますか?

これを編集し、これまでのコードを追加しました。私は私が近くにいるとは思わない。私は、これを実現させるためにいくつかのネストされたループを使用する必要があると確信しています。

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

public class AEIOUCounter 
{ 
    public static final String DELIM = "\t"; 

    public static void main(String[] args) 
    { 
    File filename = new File("aeiou.txt"); 

    try 
    { 
     Scanner fileScanner = new Scanner(new File(filename)); 

     while(fileScanner.hasNextLine()) 
     { 
     System.out.println(fileScanner.nextLine()); 
     } 
    } 
    catch(IOException e) 
    { 
     System.out.println(e); 
    } 
    catch(Exception e) 
    { 
     System.out.println(e); 
    } 
    fileScanner.close(); 
    } 
} 
+0

:それは、Java 8を使用している場合、あなたはまったくScannerを使用しないよう、かつ単一の式でこれを行うことができますことを言及する価値があります。それを置いて、 'InputStream'を使用して、すべてのバイトをStringにデコードしないでください。 –

+0

[InputStreamを文字列に読み込み/変換する]の重複の可能性があります(http://stackoverflow.com/questions/309424/read-convert-an-inputstream-to-a-string) –

+0

これまでに何を試みましたか?期待される結果は何ですか?また、スクリーンショットの代わりに質問にファイルコンテンツを貼り付けることで、他の人がテスト目的で同じコンテンツを使用するのに役立ちます。 – ericbn

答えて

1

あなたは現在、ファイル内のすべての行を印刷していますか?

fileScanner.hasNextLine() 
fileScanner.nextLine() 

しかし、あなたは、ファイル内の別の単語をフィルタリングしている探しています:

Path path = Paths.get("/path/to/file"); 
Scanner sc = new Scanner(path); 

int counter = 0; 
while (sc.hasNext()) { 
    String word = sc.next(); 
    if (word.equalsIgnoreCase("AEIOU")) { 
     counter += 1; 
    } 
} 
System.out.print("Number of words: " + counter); 
+0

ええ、彼はInputStreamを使わずにこれを達成したいと思っています。これはスキャナでも起こりません。スキャナはInputStreamを使用します。 –

1

スマーフの答えは素晴らしいです。あなたは `InputStream`の上に` BufferedReader`を入れ

long count = Files.lines(Paths.get("aeiou.txt")) 
        .flatMap(s -> Arrays.stream(s.split(" "))) 
        .filter(s -> s.equalsIgnoreCase("aeiou")) 
        .count(); 
+0

私はGrinchになりたくありませんが、 'Files.lines'はBufferedReaderを使っています:) –

関連する問題