私は、題し
第二に、ソースコード
輸入java.io.FileInputStream; インポートにjava.io.IOException; 輸入java.io.InputStreamReader。 輸入java.text.DecimalFormatの。 輸入はjava.util.ArrayList; 輸入はjava.util.List; パブリック クラスReadWords { 公共 静的 ボイドメイン(文字列[]引数)スローにIOException { 一覧 <整数>リスト= 新規のArrayListを<> (); DecimalFormat DF = 新しいのDecimalFormat( "###### 0.00" ); FileInputStreamのFIP = 新しいですFileInputStreamを( "C:\\\\\\\\ユーザー\\\\ 26218の\\\\ドキュメント\\\\テンセントファイル\\\\ 2621843759 \\\\ FileRecv \\\\ Harry.txt" ); 読者にInputStreamReader = 新しい InputStreamReaderの(FIP、 "GBK" )。 StringBufferのSB = 新しいStringBufferを(); 一方、(reader.ready()){ sb.append((CHAR )reader.read())。 } reader.close()。 fip.close(); int型私は、 文字列A = sb.toString()。 文字列M = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 。 文字列のTEMP = ""; チャー NUM [] = 新しい CHAR [A.length()]。 チャー Z [] = 新しい CHAR [26 ]。 INT X [] = 新しい INT [26 ]。 INT MAX = 0 ; Z = M.toCharArray()。 用(int型のk = 0; K <26; kは++ ) { X [k]は = 0 。 用(i = 0; iはA.length()<; iは++ ) { NUMを[I] = A.charAt(I)。 もし(Z [K] == NUM [I] || Z [k]は==のCH(NUM [I])) { X [K] ++ ; } } } 二重和= 0 。 用(i = 0; iは<25; I ++ ) のための(INT K = 0、K <25-iは、++ k個) { 場合(X [K] <X [K + 1 ]) { int型 TEMP2 = X [K] ; X [K] = X [K + 1 ]。 X [K +1] = TEMP2。 チャー TEMP3 = Z [k]は、 Z [k]はZ = [K + 1 ]。 Z [K +1] = TEMP3。 } } のための(i = 0; iは26 <; iは++ ){ 合計 =合計+ X [i]は、 } のための(i = 0; iは26 <; iは++ ) { ダブル JKL =(X [I])/合計* 100 。 System.out.println(Z [I] + "字母个数为:" + X [I] + "字母频率为:" + df.format(JKL)+ "%" )。 } } 静的 チャー CH(チャーC) { 場合(!(C> = 97 && C <= 122 )) 、C + = 32 。 リターンC; } }
第三に、実験結果
第四に、感情や経験
複雑ではありませんが、なぜ出てくると私のコードの習得を説明するために限りノックノックではないだろうことは十分ではありませんバックプログラムの構造に来てほしい、我々はまた、練習を強化する必要があります。私は主に、読み取り時に立ち往生し、ファイルの場所、ストレージの文字の数だけでなく、最終的なソート順序を記述し、それぞれの文字に対応します。幸いなことに、いくつかの質問は、私はほとんど私はまた、対応する文字出力忘れて書き始め、その後の文字に対応しており、最終的にはプロセス内のときはかなり頭痛コードを変更するのを忘れて最後の質問です感謝します。コードを書く時間が最初のコードはモジュール化された場合、どのような方法は、モジュールをどのように機能するかくらいの余裕事前に滞在する必要があります。このプログラムでは、変数の種類を必要とする、知ってほしいしなければならない後そう、それが大幅に向上しますプログラミング効率だけでなく、バグを修正し、エラーの発生を低減し、効率を向上させます。