プログラム初学者にとって配列はなかなか手強い。
今回はレクチャーと問題を通して一番最初から学習していく。
これでダメならあきらめるしかない。
なおこの講座の対象者は
「一度学習したが、よくわからない。」
「配列恐怖症」
「配列がからむと問題が解けない」
といった人だ。
最初の一歩(ArrLesson1.java)
まずは以下をコメントを読みながら写経する。
public class ArrLesson1 { public static void main(String[] args) { //配列の宣言と初期化。要素数が3の配列が作られそれぞれが0で初期化される int[] nums=new int[3]; System.out.println(nums.length); //3(要素数は3) //indexは0から始まることに注意 System.out.println(nums[0]); //0 System.out.println(nums[1]); //0 System.out.println(nums[2]); //0 //値を入れる nums[0]=10; nums[1]=20; nums[2]=30; //nums[3]=40;(エラーindexは0~2までしかない) //値を見る System.out.println(nums[0]); //10 //配列の値の取り出しと代入(20+30の結果がnums[0]に代入される) nums[0]=nums[1]+nums[2]; System.out.println(nums[0]); //50 } }
ArrLesson2.javaを作成し以下の指示通りにプログラムを作成しよう。
1.要素数が5のint型配列(変数名:data)を宣言せよ。
2.先頭の要素を出力せよ。
3.要素数を出力せよ。
4.先頭の要素に100を代入せよ。
5.最後の要素に150を代入せよ。
6.index2の要素に120を代入せよ。
7.index2の要素の値からindex0の要素の値を引いたものをindex1の要素に代入せよ。
8.index1の要素を出力せよ。
[解答例]
public class ArrLesson2 { public static void main(String[] args) { //1 int[] data=new int[5]; //2 System.out.println(data[0]); //3 System.out.println(data.length); //4 data[0]=100; //5 data[data.length-1]=150; //data[4]=150でもよいがこういった表現も覚えること //6 data[2]=120; //7 data[1]=data[2]-data[0]; //8 System.out.println(data[1]); } }
ここまではOKだろうか?だめな場合はArrLesson1の写経からやり直しだ。
クリアした人は次に進んでほしい。
ArrLesson3.javaを写経する。
import java.util.Arrays; public class ArrLesson3 { public static void main(String[] args) { // 宣言と同時なら{}での代入OK int[] dataA = { 3, 5, 10 }; // こういった書き方もある int[] dataB = new int[] { 4, 6, 10 }; // 配列の要素を全部回すパターン1 for (int i = 0; i < dataA.length; i++) { System.out.println(dataA[i]); } // 配列の要素を全部回すパターン2(拡張for文) for (int n : dataB) { System.out.println(n); } // 配列の内容を出力([3,5,10]と出力される) System.out.println(Arrays.toString(dataA)); } }
刺し身といったら醤油。配列といったらfor文だ。この部分は大事なので10回写経してもよい。
ArrLesson4.javaを作成し以下の指示通りにプログラムを作成しよう。
1.int型の配列を宣言と同時に{4,8,10}で初期化せよ。(配列変数名:arrA)
2.int型の配列を宣言と同時にnew int[]{7,1,3}で初期化せよ。(配列変数名:arrB)
3.for文でarrAの値をすべて出力せよ。
4.拡張for文を使ってarrBの値をすべて出力せよ。
5.要素数が3のint型配列を宣言せよ。(配列変数名:arrC)
6.for文を使ってarrCの要素それぞれにarrAの要素を2倍した値を代入せよ。(結果arrCは[8,16,20]となる)
7.arrCの内容が[8,16,20]になってることをArrays.toStringを使って使って確認せよ。
8.for文を使ってarrCの要素それぞれにarrBの要素を加えよ。(結果arrCは[15,17,23]となる)
9.arrCの内容が[15,17,23]になってることをArrays.toStringを使って使って確認せよ。
10.合計を管理するint型の整数sumを宣言し、0で初期化する。
11.拡張for文を用いてarrCの値の合計を求める。
12.arrCの合計を「合計は55です。」という形式で出力する。
[解答例]
import java.util.Arrays; public class ArrLesson2 { public static void main(String[] args) { //1 int[] arrA = { 4, 8, 10 }; //2 int[] arrB = new int[] { 7, 1, 3 }; //3 for (int i = 0; i < arrA.length; i++) { System.out.println(arrA[i]); } //4 for (int n : arrB) { System.out.println(n); } //5 int[] arrC = new int[3]; //6 for (int i = 0; i < arrC.length; i++) { arrC[i] = arrA[i] * 2; } //7 System.out.println(Arrays.toString(arrC)); //8 for(int i=0;i<arrC.length;i++){ arrC[i]=arrC[i]+arrB[i]; } //9 System.out.println(Arrays.toString(arrC)); //10 int sum=0; //11 for(int n:arrC){ sum+=n; } //12 System.out.println("合計は"+sum+"です。"); } }
確認テスト
では配列の基本を理解したか確認してみよう。
問)
1~6の目がランダムに出るサイコロを10回振り、その目を配列に格納してく。
そして、その結果を出力する。ただし出力フォーマットは実行例のようにすること
[実行例]
[1, 6, 1, 5, 4, 2, 1, 1, 4, 1]
コメント