コンピュータ基礎および演習II

演習問題

解答は

に提出しなさい。クラスファイル (〜.class) は提出しなくてよい。 提出には gFTP 等の ftp ソフトを用いること。

問題1

コマンドライン引数を2つとり、1つ目の引数で与えられた文字列が、 2つ目の文字列に含まれているか否かをチェックして結果を表示するプログラムを作成しなさい。 ファイル名は ArgsChecker.java とする。

実行例は以下のようになる。

$ java ArgsChecker ball baseball
baseball は ball を含んでいます。
$ java ArgsChecker ball tennis
tennis は ball を含んでいません。

問題2

以前の演習問題で、1曲を表す Music クラスを定義した。 それをベースに改造し、以下に述べる現象に対応できるようにしなさい。 ファイル名は NormalizedMusic.java とする。

英語の場合、曲名や演奏者名に and や & が使われることがあり、 これらの表記の揺らぎが検索時に障害となることがある。 そこで、Music クラスで曲名と演奏者名を登録するときに、 & を and に変換して登録し、表記を統一することを考える。

String クラスの replace メソッドを用い、この機能を実現すること。 ただし、一年生以外の人(J2SE 1.4.x以前の人)は replaceAll を代わりに用いること。

main メソッドとそれに対応した実行例は以下のようになる。

class NormalizedMusic {
    public static void main(String[] args) {
        Music favoriteSong = new Music("Judy & The Dream of Horses", "Belle & Sebastian");

        System.out.println("My favorite: " + favoriteSong.getName() +
                           " by " + favoriteSong.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 NormalizedMusic
My favorite: Judy and The Dream of Horses by Belle and Sebastian

& が and に変更されているのがわかる。

問題3

以前の演習問題で、CD 1枚を表す CD クラスを定義した。 このクラスでは、コンストラクタでタイトル、アーティスト名、曲数を指定し、 収録される曲は setTrack メソッドで登録していた。

さて、CD 自体のアーティスト名 (artist) と収録曲の演奏者 (musician) は、 オムニバスのアルバム(コンピレーション)でない限り通常一致するはずである。 そこで、アーティスト名と一致しない演奏者の曲が setTrack メソッドで追加されたときには、 「異なるアーティストの曲が登録されました。」と警告を表示するようにしなさい。 ただし、CD のアーティスト名が "Various Artists" の場合には、 オムニバスのアルバムであることを表しているので、その警告を表示しないようにすること。

ファイル名は WiseCDListener.java とする。