解答は earth.mlab.im.dendai.ac.jp の /home/submit/1I-Computer2/[初級の出題日]/[学籍番号] のディレクトリに提出しなさい。 ソースファイル (〜.java) のみを提出すること。
ファイルの送信には ftp ソフトを用いる。 Linux の gFTP を使った提出方法 (実験室のマニュアル) を参照すること。
なお、中級・上級問題は楽しめる範囲で取り組めばよい。
コマンドライン引数を2つとり、1つ目の引数で与えられた文字列が、 2つ目の文字列の中に何回出現するかを数えて表示するプログラムを作成しなさい。 ファイル名は ArgsCounter.java とする。
実行例は以下のようになる。
$ java ArgsCounter please "please please me" please please me の中に please は 2 回出現します。 $
String クラスの以下のメソッドを用いること。
以前の演習問題で、1曲を表す Music クラスを定義した。 そのクラスに、指定された語が曲名に含まれるか調べるメソッド contains を実装しなさい。 ファイル名は MusicChecker.java とする。
main メソッドとそれに対応した実行例は以下のようになる。
class MusicChecker { public static void main(String[] args) { String query = args[0]; Music[] songs = new Music[3]; songs[0] = new Music("Penny Lane", "The Beatles"); songs[1] = new Music("Strawberry Fields Forever", "The Beatles"); songs[2] = new Music("Arnold Layne", "Pink Floyd"); System.out.println("曲名に " + query + " を含む曲:"); for(int i = 0; i < songs.length; i++) { if(songs[i].contains(query)) System.out.println(songs[i].getName() + " by " + songs[i].getMusician()); } } } // このクラス定義にメソッドを追加する class Music { String name; String musician; Music(String musicName, String musicianName) { name = musicName; musician = musicianName; } String getName() { return name; } String getMusician() { return musician; } }
$ java MusicChecker La 曲名に La を含む曲: Penny Lane by The Beatles Arnold Layne by Pink Floyd
以前の演習問題で、CD を再生する CDPlayer クラスを定義した。 これを改造することにより、 コマンドラインから keyword を指定して、 その語を曲名に含む曲だけ再生するプログラムを作成しなさい。 CDListener クラスをベースとするとよい。 ファイル名は CDTrackSearcher.java とする。
CDPlayer クラスに、指定された語を曲名に含む曲だけ再生するメソッド play(String keyword) を実装すること。
問題3 で作成したプログラムを改造し、 keyword がいくつあっても検索し再生できるようにすること。 例えば、word1、word2 が指定された場合は、 その 2単語を曲名に含む曲だけ再生される (AND検索)。 配列を引数にとる play メソッドを実装するとよい。 ファイル名は CDTrackSearcher2.java とする。