この記事への参照:https://blog.csdn.net/u014204432/article/details/40348839
私は、題し
最も頻繁に(英語で「風と共に去りぬ」)単一の出力ファイルを発生上位N英単語があり、その結果はテキストファイルに入力されます。
第二に、プログラムのデザインのアイデア
1、最初の風と共に去りぬ、英語の小説のStringBufferを読み、[行ずつ読んで、文章や単語を削除したファイルの内容を持つファイルが読み込みと書き込み
[文字列の中にStringBufferの間のスペースを変換し、その後、すべての文字が文字を小文字に変換した後、単語や文章に分け
文字の配列に。
2、その配列をループは地図<文字列、整数>を保存するには、各単語または各桁に、マッピング文字列と整数を続けます
単語を達成するために、比較器によって達成降順で各単語とその出現頻度をマッピングするグループ数は、数字を並べ替え表示されます。
3.ファイル、最終的な出力周波数と英語の単語の最初のN個の最大数の異常な動作を追加し、対応する浮動は、新規に発生
第三に、ソースコード
1輸入java.io. * ; 2輸入java.utilの。* ; 3 インポートjava.util.Map.Entry。 4 5 パブリッククラスtongjidanci 6 { 7 パブリックstatic int型のn = 0 。 8 公共静的ボイドメイン(文字列[]引数){ 9 スキャナ入力= 新しいスキャナ(システム。で); 10 ストリングS。 11 int型のカウント= 0 ; 12 のint NUM = 1 。 13 // 作为FileReaderの和てFileWriter读取的对象 14 文字列FILE1 = "C:\\ユーザー\\米羊\\デスクトップ\\ piao.txt" 。 15 文字FILE2 = "C:\\ユーザー\\米羊\\デスクトップ\\ fenxijieguo.txt" 。 図16は、 お試し 17 { 18 BufferedReaderのをA = 新しい BufferedReaderのを(新しいFileReaderの(FILE1))。 19 BufferedWriterのB = 新しい BufferedWriterの(新しいてFileWriter(FILE2))。 20 のStringBufferのC = 新規のStringBuffer()。 21 // 将文件内容存入たStringBuffer中 22 ながら((S = a.readLine())!= NULL ) 23 { 24 // スプライシング文字列 25 c.append(S) 26である } 27 // StringBufferの文字列に変換し、次いで、下部ケースに全ての文字の文字 28 文字列M = c.toString()toLowerCaseメソッド();. 29 // 数字と文字のマッチングストリング26 30 列は[] D = m.split( "[^-ZA-Z0-9] +" ); 31である // それが地図<文字列で反復ストアを、整数>で 32 地図<文字列、整数> = myTreeMap 新しい新規 のTreeMap <文字列は、整数> () 33れる ため(int型 I = 0; Iはd.lengthを<; Iは++ ){ 34れる // のcontainsKey()メソッドをチェックするために使用され特定のキーは、TreeMapの中にマッピングされている 35 IF (myTreeMap.containsKey(D [I])){ 36 COUNT = ; myTreeMap.get(D [I]) 37 myTreeMap.put(D [I]は、カウント+ 1 ;) 38である } 39 他{ 40 myTreeMap.put (Dは、[I]は,. 1 ); 41である } 42である } 43れる //はコンパレータによってソート実装し 44である リスト<のMap.Entryの<文字列、整数リスト>> = 新しい新規のArrayList <のMap.Entryの<文字列、整数>> (myTreeMap。 entrySet()); 45 // ソート降順 46は、 Collections.sort(リスト、新新Map.Entry <文字列、整数>>のコンパレータ< (){ 47 48 公共int型の比較(エントリ<文字列、整数> K1、エントリ<文字列、整数> K2){ 49 //が2倍単語が多く現れる返します単語の出現回数 50 リターンk2.getValue()のcompareTo(k1.getValue());. 51れる } 52は、 53である )}; 54である のSystem.out.println( "前N Nの出力の名前を入力してください" ); 55 N- = input.nextInt(); 56である ため(のMap.Entry <文字列、整数>のマップ:リスト){ 57が IF(NUM <= N-){ 58 //出力は、指定されたファイルの内容に従って、 59 b.write(+ NUM +「最初の番号が表示され、」「単語である」+ map.getKey()+「のために出現頻度」+ map.getValue()+「時間」); 60 // ラップ 61である ; b.newLine() 62は、 // コンソールに出力する 63は ":" +するSystem.out.println(map.getKey()+ map.getValue()); 64 NUM ++ ; 65 } 66 // 出力は、出口完了 67を 他の BREAK ; 68 } 69 // 近いファイルポインタ 70 a.close(); 71である b.closeを(); 72 } 73で キャッチ(にFileNotFoundException E) 74 { 75 のSystem.out.println( "指定されたファイルを見つける" ); 76 } 77 キャッチ(IOExceptionをE) 78 { 79 のSystem.out.println( "読み取りエラーファイル" )。 80 } 81 のSystem.out.println( "出力完了" ); 82 } 83 }
第四に、営業成績
1、プログラムの結果
2.ファイルの結果
免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。