この問題を解くためには…
 → 応用編第5日目参照

問題5:コレクション①

probex5-1.(難易度:★)

以下のように、0から10までの乱数を発生させてその値を表示し、0が出たら、それまで入力した整数をすべて、奇数・偶数にわけて表示するプログラムを作りなさい。この時、入力された奇数・偶数の値は、それぞれ別の、ArrayListで作った可変長配列の中に格納すること。

期待される実行結果
0~10の値を出力:1
0~10の値を出力:9
0~10の値を出力:8
0~10の値を出力:2
0~10の値を出力:4
0~10の値を出力:3
0~10の値を出力:7
0~10の値を出力:0 ← 0が出たら、出力を終える

偶数 : 8 2 4
奇数 : 1 9 3 7

probex5-2.(難易度:★)

以下のように、0から10までの乱数を発生させてその値を表示し、0が出たら、それまで入力した整数を逆から表示するプログラムを作りなさい。

期待される実行結果
0~10の値を出力:2
0~10の値を出力:9
0~10の値を出力:1
0~10の値を出力:7
0~10の値を出力:4
0~10の値を出力:3
0~10の値を出力:1
0~10の値を出力:0 ← 0が出たら、出力を終える

1 3 4 7 1 9 2

probex5-3.(難易度:★★)

以下のように、0から100までの乱数を発生させてその値を表示し、0が出たら、それまで出力した整数の1の位が同じものをまとめて表示するプログラムを作りなさい。このとき、入力された整数値は、ArrayListで作った可変長配列の中に格納すること。

期待される実行結果
0~100の値を出力:50
0~100の値を出力:43
0~100の値を出力:2
0~100の値を出力:12
0~100の値を出力:34
0~100の値を出力:24
0~100の値を出力:8
0~100の値を出力:0 ← 0が出たら、出力を終える

一の位が0 : 50
一の位が1 : なし ← 該当する数値が無い場合は、「なし」と表示する。
一の位が2 : 2
一の位が3 : 43
一の位が4 : 24 34 ← 該当するものが複数存在する場合は、すべて表示する。
一の位が5 : なし
一の位が6 : なし
一の位が7 : なし
一の位が8 : 8
一の位が9 : なし

probex5-4.(難易度:★★)

以下のプログラムは、コンソールから文字列を入力して、それを表示するプログラムである。

Problemex5_4.java
package problemex5;

import java.io.*;

public class Problemex5_4 {

	public static void main(String[] args) throws IOException{
		InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        //	コンソールから文字列の読み込み
        String buf = br.readLine();
        System.out.println(buf);
	}

}

このプログラムを改造し、コンソールから文字列を入力させ続けて、何も入力せずEnterを押すと、それまで入力した文字列のが全て表示されるプログラムを作りなさい。このとき文字列は、ArrayListで作った可変長配列に格納すること。

期待される実行結果
文字列を入力:apple
文字列を入力:good
文字列を入力:pineapple
文字列を入力:big
文字列を入力:dog
文字列を入力:cowboy
文字列を入力: ← 何も入力せず、Enterを押すと、入力を終える

apple good pineapple big dog cowboy

probex5-5.(難易度:★★)

probex5-4を参考にして、コンソールから文字列を入力させ続けて、何も入力せずEnterを押すと、それまで入力した文字列の中から、5文字以上の単語以外のものがすべて表示されるようにプログラムを作りなさい。なお入力され続けていた文字列は、すべて一旦ArrayListに格納し、最後に5文字以上のものを削除してから表示しなさい。

期待される実行結果
文字列を入力:apple
文字列を入力:good
文字列を入力:pineapple
文字列を入力:big
文字列を入力:dog
文字列を入力:cowboy
文字列を入力:sparrow
文字列を入力:downtown
文字列を入力:girl
文字列を入力: ← 何も入力せず、Enterを押すと、入力を終える。

5文字未満の単語:good big dog girl ← 全単語をArrayListに格納し、5文字以上のものを削除しすべて表示する。

probex5-6.(難易度:★)

以下のように、0から10までの乱数を発生させてその値を表示し、0が出たら、それまで入力した整数の中から2を除いた数を選んで表示するプログラムを作りなさい。このとき、入力された整数値はlistで作った可変長配列の中に格納し、最後に、2の入った要素をremove()メソッドで削除してから表示するようにしなさい。

期待される実行結果
0~10の値を出力:2
0~10の値を出力:9
0~10の値を出力:11
0~10の値を出力:3
0~10の値を出力:2
0~10の値を出力:5
0~10の値を出力:2
0~10の値を出力:0 ← 0が出たら、出力を終える

9 11 3 5

probex5-7.(難易度:★★)

以下のように、0から10までの乱数を発生させ、その数値を小さい順に並べ替えて表示されるようなプログラムを作りなさい。0が出力されたら、プログラムは終了するものとする。なお、それまで入力され続けていた数値は、ArrayListに格納し、適切な場所に挿入するようにすること。

期待される実行結果
0~10の値を出力:5

出力された数:5

0~10の値を出力:9

出力された数:5 9 ← 9は5より大きいので、5の後に挿入する。

0~10の値を出力:1

出力された数:1 5 9 ← 1は5より大きいので、5の前に挿入する。

0~10の値を出力:3

出力された数:1 3 5 9 ← 3は1と5の間なので、1と5の間に挿入する。

0~10の値を出力:9

出力された数:1 3 5 9 9 ← すでに入力された数値も、重複してて登録する。

0~10の値を出力:0 ← 0が出たら、出力を終える