ソフトウェア演習Ⅲ〔課題 1:文字列処理〕 担当:青野雅樹

ソフトウェア演習Ⅲ〔課題 1:文字列処理〕
担当:青野雅樹
http://www.kde.cs.tut.ac.jp/~aono/data/jp/ 以下に 10 種類の日本語のニュース記事ファ
イル(UTF-8 符号, ファイル名=jnewsX.txt(X=0~9))を置いている。学籍番号の末尾と X
とが一致するニュースを選び、これを自分の作業フォルダにダウンロードせよ。次に、その
ニュース記事ファイルを読込み、ニュース記事内に含まれる 2 文字以上続く「カタカナ文
字列」
(および、ニュースに含まれるような全角の「ー」を 2 文字目以降に含む)を書き出
す Java プログラムを作成せよ。カタカナ単語の書き出す順序は問わない。出力の先頭に氏
名・学生番号等を書き出すこと。締切は 10 月 14 日(火)の夜までとする。
なお、余裕のある人は、カタカナ語のカウント出力を試みよ(こちらは7回の課題全体で、
最終的な採点時にボーナス点として加算する)
コメントとヒント:
ここでの「カタカナ文字列」とは、全角カタカナが 2 文字以上続くものだけとします。全
角カタカナは'ァ'(小さい「ア」: 整数値 12449=16 進数 0x30A1)から'ヶ'(小さい「ケ」:
整数値 12534=16 進数 0x30F6)までが Unicode で連続しており、その間にすべての全角カタ
カナは含まれます。これに 2 文字目からは「ー」(整数値 12540=16 進数 0x30FC)を加えて
ください。
課題枠内がニュース記事とすると、
「ニュース」5 回
「ファイル」3 回
「カタカナ」2 回
「プログラム」1 回
「カウント」1 回
「ダウンロード」1 回
「フォルダ」 1 回
出力されればいいことになります。
『ヒント』:String クラスの関数 s.length()(長さ)や s.charAt(i)(文字列 s の i 番目の文
字)などの関数を駆使してください。行単位の読込みは、プログラム 1-8 で示した
BufferedReader クラスの readLine()関数で、行単位で String データをファイルから読込
み、その長さ(s.length())だけ、char x = charAt(i)で文字をチェックし、これが x >='ァ' &&
x <= 'ヶ'で 2 文字目以降では x=='ー'かどうかもチェックし、2 文字以上のカタカナ語を見
つけてください。あとは同様に、カタカナ語が 2 文字以上続く間、String クラスの+(文字
列の連結演算)で追加し、カタカナ語以外がきたら、String のオブジェクトをプリントす
るという手法が考えられます。(カウントする場合は、Map クラス等を適宜利用ください)