Print Friendly, PDF & Email

1.名簿作成

チームメンバーの名簿を作成するプログラムである。

コンソールから名前を入力させ、"END"を入力したら、今まで入力した名前が表示されるようにしなさい。

なお、名前はArrayListで作った可変長配列に格納すること。(チームメンバー数は不定である)

ヒント:Scannerクラスを使うこと。

(出力イメージ)

1人目の名前を入れてください>yamada
2人目の名前を入れてください>imai
3人目の名前を入れてください>shinohara
4人目の名前を入れてください>tabuchi
5人目の名前を入れてください>END
1人目の名前:yamada
2人目の名前:imai
3人目の名前:shinohara
4人目の名前:tabuchi

 

2.キーワード記憶アプリ

Javaの英字キーワードを暗記するためのアプリケーションのプロトタイプを作成したい。

キーボードから入力されたキーワードを"END"が入力されるまでArrayListに格納したうえで表示するプログラムを作成しなさい。

なお、"END"は大文字小文字を問わないこととする。つまり"END"、"End"、"end"でも入力を終了させる。

ただし、キーワードのうち5文字未満のものは出題されない予定なので表示しないこと。

Javaのキーワードを入れてください:new
Javaのキーワードを入れてください:implements
Javaのキーワードを入れてください:extends
Javaのキーワードを入れてください:package
Javaのキーワードを入れてください:import
Javaのキーワードを入れてください:
テストに出そうなキーワード
implements
extends
package
import

 

3.テストの平均点

チームメンバーの確認テストの平均点を計算するプログラムを作成したい。

上記プログラムを改造し、コンソールから点数を入力させ、-1を入力したら、今まで入力した数値と平均(小数第2位四捨五入1位表示)が表示されるようにしなさい。

なお、この時の数値はArrayListで作った可変長配列に格納すること。

また、入力間違い(NumberFormatException)に対応すること。

ヒント:以下のように書くと小数第2位四捨五入1位表示できます。

System.out.println(String.format("%.1f", 3.1415));

(出力例)

1人目の点数を入れてください>100
2人目の点数を入れてください>0
3人目の点数を入れてください>a
数値以外が入力されました。
3人目の点数を入れてください>0
4人目の点数を入れてください>-1
1人目の点数:100
2人目の点数:0
3人目の点数:0
平均点:33.3

 

4.カードシャッフルマシーン

カジノのトランプゲームにあるようなカードシャッフルマシーンを作成したい。

ひとまずはプロトタイプとして1~13までの数値をシャッフルしたり、ソートしたりできるクラスを作成することにした。

以下のプログラムを完成させなさい。

ヒント:Collectionsクラス(標準API)参照すること。

package p15;

import java.util.ArrayList;
import java.util.Collections;

class ShuffleMachine {
    ArrayList<Integer> cards = null;

    public ShuffleMachine() {
        this.cards = new ArrayList<>();
    }
    
    public void shuffle(ArrayList<Integer> list){
        //一行でlistをシャッフルする処理を記述する
    }
    public void sort(ArrayList<Integer> list){
        //一行でlistを昇順に並べる処理を記述する
    }
}

public class Q04{
    
    public static void main(String[] args) {
        ShuffleMachine sm = new ShuffleMachine();
        
        ArrayList<Integer> cards = new ArrayList<>();
        
        for (int i = 1; i <= 13; i++) {
            cards.add(i);
        }
        System.out.println(cards + "\n");
        
        sm.shuffle(cards);
        System.out.println(cards + "\n");
        
        sm.sort(cards);
        System.out.println(cards);
    }
}

<結果の例>

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]

 
[2, 7, 1, 12, 9, 6, 3, 4, 8, 5, 10, 11, 13]
 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
 

5.図形の面積で並び替えをする

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

スーパークラス abstract Figure

役割:図形を表現する抽象クラス。 java.lang.Comparable<Figure>インターフェースを実装する。

フィールド
フィールド名 アクセス修飾子 役割
area protected double 図形の面積を保持する
メソッド
メソッド名 アクセス修飾子 戻り値の型 役割
compareTo(Figure o) public int Comparableインターフェースの同名メソッドの実装(オーバーライド)

 

サブクラス1 Rectangle extends Figure

役割:図形の一種である四角形を表現する。

フィールド
フィールド名 アクセス修飾子 役割
x private double 四角形の横幅を保持する
y private double 四角形の縦幅を保持する
コンストラクタ

役割:全てのフィールドを適切に初期化する。

メソッド
メソッド名 アクセス修飾子 戻り値の型 役割
toString() public String Rectangle{area=xx.x}という文字列表現を返す。(オーバーライド)

 

サブクラス2 Circle extends Figure

役割:図形の一種である円を表現する。

フィールド
フィールド名 アクセス修飾子 役割
r private double 円の半径を保持する
コンストラクタ

役割:全てのフィールドを適切に初期化する。

メソッド
メソッド名 アクセス修飾子 戻り値の型 役割
toString() public String Circle{area=xx.x}という文字列表現を返す。(オーバーライド)

<テストクラス>

public class Q06 {

    public static void main(String[] args) {
        Comparable[] fg = new Figure[5];
        fg[0] = new Rectangle(5.0, 10.0);
        fg[1] = new Circle(5.0);
        fg[2] = new Circle(3.0);
        fg[3] = new Circle(9.0);
        fg[4] = new Rectangle(1.5, 1.5);

        List<Comparable> list = Arrays.asList(fg);
        Collections.sort(list);
        for (Comparable comparable : list) {
            System.out.println(comparable);
        }
    }
}

<結果>

Rectangle{area=2.25}
Circle{area=28.3}
Rectangle{area=50.0}
Circle{area=78.5}
Circle{area=254.5}

問1:Comparable<Figure>と型パラメータを使用したことにより、どのようなメリットがあったかを答えなさい。

問2:現在の昇順の並べ替えを降順にするにはどこをどう変えればよいか答えなさい。

問3:円と長方形以外の図形クラスを作成して配列fgに追加しても動作するようにしなさい。

6.辞書のプロトタイプ

辞書のプロトタイプを作りたい。

以下のようなプログラムがあるとき、melonに対応する日本語を表示させなさい。

package p15;

import java.util.HashMap;
import java.util.Map;

public class Q06 {

    public static void main(String[] args) {
        Map<String, String> dictionary = new HashMap<>();
        dictionary.put("apple", "リンゴ");
        dictionary.put("banana", "バナナ");
        dictionary.put("melon", "メロン");
        dictionary.put("strawberry", "いちご");
        
        //ここに一行でコードを書く

    }
}

 

 

7.オリジナル問題作成

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

以上。

 

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