Print Friendly, PDF & Email

1.クラスの作成①

以下のクラスを作成しなさい

クラス名:Rectangle

フィールド:double width, double hight

コンストラクタ:フィールドを初期化する

メソッド:長方形の面積を返すgetRectangularArea

テストクラス:

package p09;

public class Q01 {

    public static void main(String[] args) {
        Rectangle r1 = new Rectangle(20.3, 12.5);
        System.out.println(r1.getRectangularArea());
    }
}

<結果>

253.75

 

2.クラスの作成②

以下のクラスを作成しなさい

クラス名:Parrot

フィールド:String name

コンストラクタ:フィールドを初期化する

メソッド:メッセージを受け取って挨拶とともにメッセージをオウム返しするtalk。

テストクラス:

package p09;

public class Q02 {

    public static void main(String[] args) {
        Parrot p1 = new Parrot("P-chan");
        Parrot p2 = new Parrot("Q-chan");
        p1.talk("こんにちは");
        p2.talk("您好");
    }
}

<結果>

Hello, I'm P-chan
こんにちは
Hello, I'm Q-chan
您好

 

3.クラスの作成③

以下のクラスを作成しなさい。なお、特に指定のない項目については各自で名前を考えること。

クラスの概要:配列の統計値を計算してくれるクラス

フィールド:doulbe[] numbers

コンストラクタ:フィールドを初期化する

メソッド:合計、平均、最大値、最小値、を返す合計4つのメソッド

テストクラス:

package p09;

public class Q03 {

    public static void main(String[] args) {
        StatisticsCalculator s = new StatisticsCalculator(new double[]{19.8, 33.4, 95.32, 644.2});
        System.out.println(s.getSum());
        System.out.println(s.getAverage());
        System.out.println(s.getMax());
        System.out.println(s.getMin());
    }
}

<結果>

791.0
197.75
644.2
19.8

余裕があれば最頻値(Mode)、標準偏差(Standard Deviation)などの統計値も計算できるようにすること。

 

4.インスタンス変数をクラスメソッドから参照する

次のコードは実行できません。

それはなぜでしょうか?

package p09;

public class Q04 {

    int num1 = 10;
    int num2 = 20;

    public static void main(String[] args) {
        System.out.println(num1 + num2);
    }
}

 

5.インスタンス変数のスコープ

以下のプログラムはサイコロを模したDiceクラスとそのテストクラスQ05から構成されています。

しかし、意図した通りの動きをしません。

ローカル変数をインスタンス変数に変えることでこの問題に対処しなさい。

package p09;

import java.util.Random;

class Dice{
    
    Random random;
    
    Dice(){
        random = new Random();
        int number = 0;
        roll();
    }
    
    void roll(){
        number = random.nextInt(6)+1;
        System.out.println(number);
        }
    }
}

public class Q05 {
    public static void main(String[] args) {
        Dice d = new Dice();
        d.roll();
    }
}

<期待される結果の例>

5
3

 

6.クラスをメインメソッドでインスタンス化して利用する

以下のプログラムはチームメンバー全員の自己紹介をするためのプログラムです。

以下の NewComer1 (新入社員)クラスを使用して、プログラムを作成しなさい。

class NewComer1{
    private String name;

    public void setName( String nm ){
        name = nm;
    }

    public void showProfile() {
        System.out.println( "私の名前は、" + name + "です。" );
    }
}

(1)Q06クラスにmainメソッドを追加しインスタンスを生成する。
(2)setName メソッドであなたの名前を設定する。
(3)showProfile メソッドであなたの名前を表示する。

<結果の例>

私の名前は、今井です。

7.インスタンスメソッドの作成と変更

前問の NewComer1 クラスに、次の内容を追加して新たなクラスNewComer2を作りなさい。
(1)年齢を保持する int 型のインスタンス変数を追加する。
(2)年齢を設定するインスタンスメソッド、setAgeを追加する。
(3)mainメソッド内で自分の年齢(サバ読み可)を設定する。
(4)showProfile メソッドで名前、年齢を表示するようにする。
(5)Q07クラスにインスタンスを生成し、名前と年齢を設定してからプロフィールを表示する。

<結果の例>

私の名前は今井です。
年齢は40歳です。

 

8.オブジェクト配列とメソッド

前問の NewComer2 クラスを使用して次のプログラムを作成しなさい。
(1)オブジェクト配列を使い、メンバー全員分のNewComer クラスのインスタンスを作成しなさい。
(2)すべてのインスタンスに名前、年齢を設定する。
(3)すべてのインスタンスのプロフィールを表示する。

<結果の例>

出力例

私の名前は今井です。
年齢は40歳です。
---------------------
私の名前は山田です。
年齢は37歳です。
---------------------
(以下省略)

 

9.コンストラクタの作成

前問の NewComer2 クラスに、名前と年齢を初期化するコンストラクタを追加してNewComer3とし、次のプログラムを作成しなさい。
なお、IDEの「コードの挿入」機能を使わないパターンと、使うパターン両方試すこと。

(1)オブジェクト配列を使い、メンバー全員分のNewComer クラスのインスタンスを1文で作成しなさい。
(2)すべてのインスタンスのプロフィールを表示する。

<結果の例>

私の名前は今井です。
年齢は22歳です。
--------------
私の名前は山田です。
年齢は23歳です。

(中略)

 

10.インスタンスメソッドの利用

前問の NewComer クラスに、次の内容を追加しなさい。
(1)趣味を保持するインスタンス変数( hobby:String 型)を追加する。
(2)名前、年齢、趣味を設定する引数を持つようにコンストラクタを変更する。
(3)ShowProfile メソッドを名前、年齢、趣味を表示するように変更する。
(4)一つ年をとるgetOlderメソッド(引数無し、戻り値年齢)を追加する。
(5)NewComer クラスのインスタンスをチームメンバー数だけ作成する。
(6)全員のプロフィールを表示する。
(7)getOlderメソッドで全員1歳年をとらせてから同様にプロフィールを表示する。
  (ここでは戻り値を使っていない、戻り値を捨てていることに注意)

<結果の例>

私の名前は今井です。
年齢は22歳です。
趣味は釣りです。
--------------
私の名前は山田です。
年齢は23歳です。
趣味は農業です。
--------------

(中略)

私の名前は今井です。
年齢は23歳です。
趣味は釣りです。
--------------
私の名前は山田です。
年齢は24歳です。
趣味は農業です。
--------------

(中略)

 

11.thisの使い方

漫才をする学生のプログラムのプロトタイプである。

以下のようなアウトプットを表示したい。

ボケます from 今井 to 山崎
なんでやねん! from 山崎 to 今井
ボケます from 山崎 to 今井
なんでやねん! from 今井 to 山崎
 
ボケます from 今井 to 今井
なんでやねん! 今井

つまり2人の生徒が互いにボケを交わした後、自分でボケて自分自身に突っ込みを入れたいのである。

 

問:以下のコードの①~③を埋めなさい。

package p09;

class Student {

    String name;

    public Student(String name) {
        ①.name = name;
    }

    public void boke(Student st) {
        System.out.println("ボケます from " + ②.name + " to " + st.name);
    }
    public void tsukomi(Student st) {
        System.out.println("なんでやねん! from " + ②.name + " to " + st.name);
    }

    public void jikoTsukomi(Student st) {
        boke(③);
        System.out.println("なんでやねん! " + this.name);
    }
}

public class Q11 {

    public static void main(String[] args) {
        Student imai = new Student("今井");
        Student yamazaki = new Student("山崎");
        imai.boke(yamazaki);
        yamazaki.tsukomi(imai);
        
        yamazaki.boke(imai);
        imai.tsukomi(yamazaki);
        
        System.out.println("");
        imai.jikoTsukomi(imai);
    }
}

 

12.オリジナル問題作成

将来の後輩のために良い問題が出来たら教えてください。

 

JavaSEの問題集トップページに戻る