もくじ
カプセル化、オーバーロード、コンストラクタ 練習問題
今回の練習問題は第4章のカプセル化(4-5)からコンストラクタ(4-8)までの内容となっています。カプセル化、null、オーバーロード、コンストラクタについての練習問題になっています。
examフォルダ内にファイルは保存してください。(階層→c:\work\exam)
【Java】カプセル化 練習問題
以下の指示に従ってプログラミングを行ってください。examフォルダ内に「Test04.java」「Exam1004.java」で保存してください。
保存後、「Exam1004.java」をコンパイルおよび実行を行ってください。
指示1 Test04クラスのメンバ指示
| クラス名 | ||||
|---|---|---|---|---|
| Test04 | ||||
| アクセス修飾子 | フィールド名 | 型 | 初期値 | |
| private | action | String | なし(宣言のみ) | |
| アクセス修飾子 | メソッド名 | 戻り値の型 | 引数 | 処理内容 | 
| なし | setAction | void | String a | 引数の値をactionに設定する (ただし条件あり※) | 
| なし | act | void | なし | actionの内容を表示する※ | 
※条件は指示2参照
※表示内容は実行結果参照のこと
指示2 setAction()メソッド内の条件
actionフィールドは”飛ぶ”、”走る”、”歩く”、”しゃべる”しか設定できません。
それ以外の値は”そのアクションは現在設定できません”と表示してください
指示3 Exam1004クラスは以下のコメントを参考に作成
| 1 2 3 4 5 6 7 8 9 10 11 12 13 | class Exam1004{   public static void main(String[] args){     /*         以下のプログラミングを記述してください        ①Test04クラスからインスタンスを生成してください          (インスタンス名は任意)        ②①で作成したインスタンスにsetAction()を利用して、"飛ぶ"を設定してください        ③①で作成したインスタンスを利用してact()メソッドを呼び出してください     */   } } | 
実行結果
C:\work\exam>javac Exam1004.java
C:\work\exam>java Exam1004
飛ぶことを練習中です
今回は文字列での比較となります。また、条件にはor演算を利用したほうが、記述は短くなります。
以下は条件部分のみの参考例です(答えではありません)
| 1 2 3 4 5 | if(a.equals(指定文字列) || a.equals(指定文字列) || ....){    引数の値をフィールドに設定 }else{    設定できないことを表示 } | 
【Java】null 練習問題
以下の指示に従いプログラムを作成してください。
保存後、「Exam1004.java」をコンパイルおよび実行を行ってください。
指示1 Exam1004のmain()メソッド内を変更
setAction()メソッドに設定する値を”しゃがむ”に変更してください。変更後、Exam1004.javaをコンパイルおよび実行してください。
実行結果
C:\work\exam>javac Exam1004.java
C:\work\exam>java Exam1004
そのアクションは現在設定できません
nullことを練習中です
指示2 Test04のact()メソッド内を修正
指示1の実行結果のようにact()メソッドの表示に不備があります。これはactionフィールドの初期値がnullになっていることが原因です。
そこで、act()メソッド内に条件を設定し、actionがnullの際には「”現在アクションは設定されていません”」というメッセージを表示するように変更してください。
実行結果
C:\work\exam>javac Exam1004.java
C:\work\exam>java Exam1004
そのアクションは現在設定できません
現在アクションは設定されていません
※表示が変わらない場合は、Test04.javaをコンパイルして後に、Exam1004.javaのコンパイルおよび実行を行ってください。
nullかどうかを比較するには「変数名 == null」で比較できます。
【Java】オーバーロード 練習問題
以下の指示に従いプログラムを作成してください。また、プログラム内にもコメントで指示がありますので、コメントの下にプログラミングを行ってください。examフォルダ内に「Test05.java」「Exam1005.java」で保存してください。
保存後、「Exam1005.java」をコンパイルおよび実行を行ってください。
指示1 Test05クラスおよびメンバ(フィールド、メソッド)の内容指示
| クラス名 | ||||
|---|---|---|---|---|
| Test05 | ||||
| アクセス修飾子 | フィールド名 | 型 | 初期値 | |
| private | numbers | int[] | なし(宣言のみ) | |
| アクセス修飾子 | メソッド名 | 戻り値の型 | 引数 | 処理内容 | 
| なし | setNumbers | void | int a | numbers配列の0番目に引数の値を格納する | 
| なし | setNumbers | void | int a, int b | numbers配列に引数aからbまでの値を順序良く格納する※ 例:5,10の場合は5から10の6つが配列に格納される | 
| なし | void | なし | numbers配列の情報を表示する※ | |
※引数のデータがa >= bとなっている場合は、以下のようにエラーメッセージを表示すること
「”setNumbers(int a, int b)の引数はa < bとなるように設定してください”」
※表示内容は実行結果参照
各setNumbers()メソッド内でnumbers配列のnewを忘れずに行いましょう。例えば引数の値が「a = 5 , b = 10」の場合、配列の数は6つ必要になります。
print()メソッド内で配列内を表示する際には、numbers.lengthで配列分ループを回すようにしましょう。
指示2 Exam1005.javaは以下のように記述
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //Exam1005にはコメントによる指示はありません。 class Exam1005{   public static void main(String[] args){      Test05 t051 = new Test05();      t051.setNumbers(1);      t051.print();      Test05 t052 = new Test05();      t052.setNumbers(5,10);      t052.print();      Test05 t053 = new Test05();      t053.setNumbers(10,5);   } } | 
実行結果
C:\work\exam>javac Exam1005.java
C:\work\exam>java Exam1005
現在配列には以下の数値が保存されています
1
現在配列には以下の数値が保存されています
5 6 7 8 9 10
setNumbers(int a, int b)の引数はa < bとなるように設定してください
【Java】コンストラクタ 練習問題
以下の指示に従ってプログラミングを行ってください。examフォルダ内に「Test06.java」「Exam1006.java」で保存してください。
保存後、「Exam1006.java」をコンパイルおよび実行を行ってください。
指示1 Test06クラスのメンバ指示
| クラス名 | ||||
|---|---|---|---|---|
| Test06 | ||||
| アクセス修飾子 | フィールド名 | 型 | 初期値 | |
| private | numbers | int[] | なし(宣言のみ) | |
| アクセス修飾子 | コンストラクタ名 | 引数 | 処理内容 | |
| なし | Test05 | なし | numbers配列に1-10までの数値を格納する | |
| なし | Test05 | n | 引数で指定した数値から10個分の数値をnumbers配列に格納する 例:n=12の場合は12-21まで | |
| アクセス修飾子 | メソッド名 | 戻り値の型 | 引数 | 処理内容 | 
| なし | void | なし | numbers配列の情報を表示する※ | |
| なし | getNumbers | int[] | なし | numbers配列をreturnする | 
※表示内容は実行結果参照のこと
指示3 Exam1006クラスは以下のコメントを参考に作成
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | class Exam1006{   public static void main(String[] args){     /*         以下のプログラミングを記述してください        ①Test06クラスからコンストラクタの引数はなしでインスタンスを生成してください          (インスタンス名は任意)        ②①で作成したインスタンスにpirnt()を利用して、表示してください     */     /*         以下のプログラミングを記述してください        ③Test06クラスからコンストラクタの引数に6を指定してインスタンスを生成してください          (インスタンス名は任意)        ④③で作成したインスタンスにgetNumbers()を利用して、変数xに代入してください     */     //変数xに代入された配列の数を表示する     System.out.println("配列の最後は" + x[x.length - 1] + "です");   } } | 
実行結果
C:\work\exam>javac Exam1006.java
C:\work\exam>java Exam1006
1 2 3 4 5 6 7 8 9 10
配列の最後は15です