Javaプログラミング基礎

演習問題

解答は

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

問題1

次のプログラムは、 以前の例題で示した住所データを管理するプログラムである。

class AccessRestrictedAddressNote {
    public static void main(String[] args) {
	Person medio = new Person();

	medio.setAddress("東京都千代田区神田錦町2-2");
	medio.setName("電大 メディ男");

	medio.printAddress();
	medio.printName();
    }
}

class Person {
    String address;
    String name;

    void printAddress() {
	System.out.println("住所: " + address);
    }

    void printName() {
	System.out.println("名前: " + name);
    }

    void setAddress(String a) {
	address = a;
    }

    void setName(String n) {
	name = n;
    }
}

このプログラムを元に、クラスの外部に対して公開すべきでない情報と、 公開すべき情報をそれぞれ private, public として宣言するように変更しなさい。 ファイル名は AccessRestrictedAddressNote.java とする。

問題2

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

メソッド main のあるクラス名は ArgsChecker とし、 ファイル名は ArgsChecker.java とする。 また、このプログラムでは ArgsChecker 以外のクラスを作成する必要はない。

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

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

問題3

コマンドライン引数を3つ取り、 辞書順に並び替えて表示するプログラムを書きなさい。 アルファベットからなる文字列のみを対象とする。

メソッド main のあるクラス名は SortThreeStrings とし、 ファイル名は SortThreeStrings.java とする。 また、このプログラムでは SortThreeString 以外のクラスを作成する必要はない。

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

$ java SortThreeStrings football baseball basketball
baseball basketball football

問題4

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

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

String クラスの replace メソッドを用い、この機能を実現すること。 ただし、2004年以前に入学し、入学時の推奨環境 (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 {
    private String name;
    private String musician;
    public Music(String musicName, String musicianName) {
        name = musicName;
        musician = musicianName;
    }
    public String getName() {
        return name;
    }
    public String getMusician() {
        return musician;
    }
}
$ java NormalizedMusic
My favorite: Judy and The Dream of Horses by Belle and Sebastian

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