今回は,
問題:集合とJava言語に関する以下の問いに答えてください。
明らかに偶数は2,
ArrayListを用いると,
(1)
- ※1)
- 偶数は0や-2も含みますが,
今回は自然数であるという条件がありますので, 0や負数を含みません。
解説
(1)10より小さな自然数のうち,偶数を整数型の配列とArrayListのオブジェクトにセットするプログラムを作ってください。結果が得られたら,偶数の個数を表示し,その後全ての偶数を表示しましょう。
先ずは配列で目的の処理を行ってみます。
ソースコード:GusuNoHairetsu.
01: //filename : GusuNoHairetsu.java
02: //10 より小さい自然数のうち,偶数を配列a にセットする。
03:
04: class GusuNoHairetsu {
05: public static void main(String[] args) {
06: //添え字が偶数なら1,奇数なら0 をセット。
07: int temp[] = new int[10]; //探索リスト
08: int even = 0; //偶数の数をカウント
09: for ( int i = 1 ; i < 10; ++i) {
10: if (i%2 == 0) {
11: temp[i] = 1;
12: ++even;
13: } else temp[i] = 0;
14: }
15: System.out.println("偶数は"+even+"個");
16: int a[] = new int[even];//偶数の個数分配列を用意
17: int j = 0;
18: for (int i = 0; i < 10 ; ++i){
19: if (temp[i]==1) {
20: a[j] = i;
21: ++j;
22: }
23: }
24: for( int i = 0;i<10 ; ++i){
25: System.out.println("a["+i+"] = "+ a[i]);
26: }// end of main
27: }// end of class GusuNoHairetsu
解説は後回しにして,
ソースコード:GusuNoArrayList.
01: //filename : GusuNoArrayList.java
02: //10 より小さい自然数のうち,偶数をArrayList A にセットする。
03:
04: import java.util.ArrayList;
05:
06: class GusuNoArrayList {
07: public static void main(String[] args) {
08: ArrayList A = new ArrayList();
09: for ( int i = 1 ; i < 10 ; ++i )
10: if ( i%2 == 0 ) A.add(i);
11: System.out.println("偶数は" + A.size() + "個");
12: for ( int i = 0 ; i < A.size() ; ++i )
13: System.out.println("A("+i+") = " + A.get(i));
14: }// end of main()
15: }// end of class GusuNoArrayList
実質半分以下に行数が減りました。キーボードを打つ数が減ります。
どちらが良いかというより,
- 一時的なデータの保存場所として,
7行目の配列tempが使われる。 - 偶数の数をカウントするために変数evenが使われる。
- 繰り返しが3回行われる。
ArrayListクラスを用いることで,
配列を用いた場合
一方,
メモリの使用量,
- ※2)
- 偶数を発見するたびにその数を表示し,
偶数の個数を最後に表示することにすれば繰り返しは1回で済みますが, 題意は先ず個数を表示することですから, 2回必要です。