2

私は自分のプログラム (これはクラス用です) を書き始めたところですが、それを書き留めるのに苦労しています。ここに私が達成したい目標のリストがあります。

  1. .txtファイルを指定する方法です(java.io.Fileを使用)
  2. ファイルを読み取って単語を分割する必要があり、重複は許可されます。(String.split と util.regex.Pattern を使用して、空白と句読点を解決する予定です)
  3. 私は単語を 1D 配列に入れてから、配列の長さを見つけることを目指しています。

私が直面している問題は、txt ファイルの解析です。Scanner はできるとクラスで言われましたが、R(ing)TFM を実行している間は見つけられませんでした。Scanner でファイルを読み取る方法を理解するのに役立つ API の指示を求めていると思います。各単語を配列に入れることができたら、クリアにする必要があります。

編集:みんなの助けと意見のおかげで、私は何をする必要があるかを理解しました. 将来誰かがこの質問に出くわした場合、私の最後のスニペットは次のようになります。

Scanner in = new Scanner(file).useDelimiter(" ");
ArrayList<String> prepwords=new ArrayList<String>();
while(in.hasNext())
prepwords.add(in.next());
return prepwords; //returns an ArrayList without spaces but still has punctuation

Javaはファイルが存在することを確認できないため、IOExceptionをスローする必要がありました。そのため、「FileNotFoundException」に遭遇した場合は、IOExceptionをインポートしてスローする必要があります。少なくともこれは私にとってはうまくいきました。皆様、ご意見ありがとうございます!

4

3 に答える 3

1

JSE 6.0 スキャナー APIへのリンクは次のとおりです。

プロジェクトを完了するために必要な情報は次のとおりです。

1. Use the Scanner(File) constructor.
2. Use a loop that is, essentially this:
    a. Scanner blam = new Scanner(theInputFile);
    b. Map<String, Integer> wordMap = new HashMap<String, Integer>();
    c. Set<String> wordSet = new HashSet<String>();
    d. while (blam.hasNextLine)
    e. String nextLine = blam.nextLine();
    f. Split nextLine into words (head about the read String.split() method).
    g. If you need a count of words: for each word on the line, check if the word is in the map, if it is, increment the count.  If not, add it to the map.  This uses the wordMap (you dont need wordSet for this solution).
    h. If you just need to track the words, add each word on the line to the set.  This uses the wordSet (you dont need wordMap for this solution).
3. that is all.

マップもセットも必要ない場合は、List<String> と ArrayList または LinkedList のいずれかを使用します。単語にランダムにアクセスする必要がない場合は、LinkedList が最適です。

于 2013-08-26T16:20:59.477 に答える
0

簡単なこと:

//variables you need    
File file = new File("someTextFile.txt");//put your file here
Scanner scanFile = new Scanner(new FileReader(file));//create scanner
ArrayList<String> words = new ArrayList<String>();//just a place to put the words
String theWord;//temporary variable for words

//loop through file
//this looks at the .txt file for every word (moreover, looks for white spaces)
while (scanFile.hasNext())//check if there is another word
{   
    theWord = scanFile.next();//get next word
    words.add(theWord);//add word to list
    //if you dont want to add the word to the list
    //you can easily do your split logic here
}

//print the list of words
System.out.println("Total amount of words is:  " + words.size);
for(int i = 0; i<words.size(); i++)
{
    System.out.println("Word at " + i + ":  " + words.get(i));
}

ソース:

http://www.dreamincode.net/forums/topic/229265-reading-in-words-from-text-file-using-scanner/

于 2013-08-26T16:33:23.127 に答える