- 締切済み
ソースがかけなくて困ってます。
入力ファイルを読み込んで、画面にファイル内容を表示した後に ファイル行数と、ファイル中の文字数(スペース、タブスペース、改行をのぞいて) ファイル中の単語数を"Line:___ ; CHAR: ___ ; WORD: ___" (_に数字が入ります。) と表示するということで・・・・ 毎度のことながらソースがうまくかけません・・・・ どういう風にソースを書いて良いのか・・・・見当が付きません・・・ もし宜しければご教授ください・・・・
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- ssr-y6
- ベストアンサー率71% (5/7)
考え方としては、 [1]:一行ずつ読み出してそれを行数とする [2]:単語の区切り文字の次の文字数を数えて単語数とする [3]:単語の区切り文字以外の文字数を数えて文字数とする となるので、以下のようになります。 import java.io.*; class wordchar { public static void main(String[] args) { int Int1, LineCount, CharCount, WordCount; boolean SpaceFlag; char Char1; String Str1; LineCount = CharCount = WordCount = 0; try { BufferedReader InFile = new BufferedReader(new FileReader("wordchar.java")); while ((Str1 = InFile.readLine()) != null) { LineCount ++;/*[1]*/ for (Int1 = 0, SpaceFlag = true; Int1 < Str1.length(); Int1 ++) { Char1 = Str1.charAt(Int1); if ((Char1 == ' ') || (Char1 == '\t')) SpaceFlag = true; else { if (SpaceFlag) WordCount ++;/*[2]*/ CharCount ++;/*[3]*/ SpaceFlag = false; }; }; }; InFile.close(); } catch (Exception ex) { System.exit(-1); }; System.out.println("Line:" + Integer.toString(LineCount) + " Char:" + Integer.toString(CharCount) + " Word:" + Integer.toString(WordCount)); }; }
- osamuy
- ベストアンサー率42% (1231/2878)
UNIX系のコマンドwcと同じようなものですので、その手のCのソースとか参考になるかと。 http://vapour.s22.xrea.com/clangdojo/index.php?wc.c Javaだと、StringTokenizerとか使えるから、少し楽にかけます。 この手のやつは、Javaとか処理系に依存しない基礎的な話なので、アルゴリズム等を主題にした本とかを手元に持っておくとよいです。