パッケージ3; / *このプログラムは、統計的な文字が表示されるの頻度を文書化することを目指しています。* / 輸入java.io. *; クラスワード{ int型NUM; 文字列の単語。 公共の単語() { = 0; 単語= ""; } } パブリッククラス御馳走{ 公共の静的な無効メイン(文字列の引数[]) { 文字列s; 文字列ARR []は新しい文字列[500000]を=。 int型のtempが[]新しいINT [500000]を=。 int型NUM1 []新しいINT [500000] =; // 1 int型のNUM2は、[]新しいINT [500000]を=。 文字列ます[] =新しいString [50万]。 int型CHAR1 = 0、合計= 0; int型NUM = 0; //合計 int型のASPは[]新しいINT [100] =; チャーzimu [] =新しいCHAR [100]。 {試します BufferedReaderのBR =新しいをBufferedReader(新規FileReader( "F:/新規フォルダ/1/harry.txt")); {試します ARR [CHAR1] =新しい文字列(); しばらく((S = br.readLine())!= NULL) { 以下のために(; I <s.length(); int型iが0を= I ++) { (s.charAt(I)> = 65 && s.charAt(I)<= 90)であれば { ++; ASP [(int型)s.charAt(I)-65] ++; } IF(s.charAt(I)> = 97 && s.charAt(I)<= 122) { ++; ASP [(INT)s.charAt(I)-97 + 26] ++; } } 以下のために(; I <s.length(); int型iが0を= I ++) { (s.charAt(I)== ' '&& s.charAt(I + 1)=='')の場合 継続する; もし(s.charAt(I)!= ' '&& s.charAt(I)!=' \ n 'は&& s.charAt(I)!='、 '&& s.charAt(I)!='。' && s.charAt( I)!= '!' && s.charAt(I)!= '?' && s.charAt(I)!= '"') { ARR [CHAR1] + = s.charAt(I)。 継続する; } もし(s.charAt(I)==」 '&& s.charAt(I + 1)!=' '&& s.charAt(I + 1)!=' \ n 'は&& s.charAt(I + 1)!='、 '&& s.charAt(I + 1)!='。 '&& s.charAt(I + 1)!='! '&& s.charAt(I + 1)!='? '&& s.charAt(I + 1)!= '"') { 継続する; } 他の{CHAR1 ++; ARR [CHAR1] =新しい文字列(); } } } (I ++; I <52、I = 0の整数)のために { IF(I <= 26) zimu [I] =(CHAR)(65 + I)。 (I> = 26)の場合 { zimu [I] =(CHAR)(97 + I-26)。 } } //ソート (I ++; I <52、I = 0の整数)のために { 用(INT J = I + 1、J <52; J ++) もし(ASP [I] <ASP [J]) { int型PS = 0; PS = ASP [I]。 ASP [I] = ASP [J]。 ASP [J] = PS。 四Q = 'X'; PR = zimu [I]。 zimu [I] = zimu [J]。 Shimu [H] = Q。 } } (I ++; I <52、I = 0の整数)のために { System.out.println(zimu [I] + "频率:" + String.Formatの( "%2F"、(二重)ASP [I] / NUM * 100)+ "%")。 } / *(I = 0のint I ++; I <CHAR1)について { System.out.println(ARR [I])。 } 以下のために(; I <CHAR1; int型私は0を= I ++) { もし(NUM1 [I]!= 1) { [I] = 1 TEMP。 (; J <CHAR1; J ++ int型J = I + 1)について { (NUM1 [J]!= 1)の場合 { もし(ARR [I] .equals(ARR [J])) { NUM1 [J] = 1。 TEMP [I] + = 1; } } } } } 以下のために(; I <CHAR1; int型私は0を= I ++) { IF(NUM1 [I] == 1) 継続する; そうしないと { [和]は新しい文字列(ARR [I])を提供=。 NUM2 [和] = TEMP [I]。 合計++; } } * / / *(I = 0のint I ++; I <CHAR1)について { System.out.println(NUM1 [I] + " "+ TEMP [I] +" "+゜[I] +"" + NUM2 [I])。 } / *(I = 0のint I ++; I <合計)について { (; J <合計; J ++ int型J = I + 1)について { もし(num2の[I] <num2の[J]) { あなたPW = 0; PW = NUM2 [I]。 NUM2 [I] = NUM2 [J]。 num2の[J] =睡眠。 「」=などの文字列; =あなた[i]は、 度[I] =゜[J]。 DEG [J] =として; } } } * / / *(I = 0のint I ++; I <合計)について { System.out.println( "語彙:" +゜[I] + "発生" + NUM2 [I])。 } * / }キャッチ(IOExceptionを電子){ 自動的に生成された// catchブロックのTODO e.printStackTrace(); } }キャッチ(にFileNotFoundException電子){ 自動的に生成された// catchブロックのTODO e.printStackTrace(); } } }