public class Rep4 { public static void main(String[] args) { int kake[] = new int[11]; int i,j; for(i = 「 a 」 j = 1; 「 b 」; i++) { if(「 c 」) { kake[j] = i; System.out.println("[" + j + "] = " + kake[j]); 「 d 」; } } } } |
[1] = 4 [2] = 8 [3] = 12 [4] = 16 [5] = 20 [6] = 24 [7] = 28 [8] = 32 [9] = 36 [10] = 40 |
public class Rep4 { public static void main(String[] args) { int kake[] = new int[11]; int i,j; for(i = 1 j = 1; i <=40 ; i++) { if( i % 4 == 0 ) { kake[j] = i; System.out.println("[" + j + "] = " + kake[j]); j++;} } } } |
1から40までの数なのでiは1かあらはじめなければならない。i=0にして しまうと0も4で割り切れてしまうからである。
for文の繰り返し条件の部分です。問題を見ると、変数 i に関して以下のこ とがわかります。
これらのことから、for文のループは i の値が0〜40の範囲で繰り返すこと がわかります。よって、繰り返し条件は i <= 40 もしくは i < 41になります。
if文の条件式の部分です。問題を見ると、条件式が真である場合に実行され るステートメントに関して以下のことがわかります。
これらのことから、このステートメントは i が奇数である場合に実行される ことがわかります。
奇数とは4で割り切れる値なので、i を4で割った余りが0でなければ i
はでわりきれるk数だということになります。
また、商の余りを求めるには%演算子を用いればよいので、条件式は i % 4 ==
0 になります。
if文の条件式が真である場合に実行されるステートメントの一つです。
他に変数 j が用いられるステートメントは以下の二つです。これらのことから、変数 j は個々の配列要素を指定する値として用いられる ことがわかります。for文の初期化式で1に初期化されてるので、その時点では 一番目の配列要素、すなわち kake[1] を指しています。
配列に値が代入されたら j の値を一つ増加させなければいけません。そうで ないと、kake[1]に何度も値が代入されることになります。よって、この部分のス テートメントは j++ 、もしくは j = j +1 になります。
[1] = 4 [2] = 8 [3] = 12 [4] = 16 [5] = 20 [6] = 24 [7] = 28 [8] = 32 [9] = 36 [10] = 40 |
問題文にもあるように、1〜40の範囲にある4で割り切れる値を配列に代入し、出力 するプログラムです。
for文で変数 i を1〜40の範囲でループさせ、if文の条件式で i の値が4で割り 切れるかどうかテストします。・1次元配列
共通の名前を使用してアクセスすることが可能な、同じ方を持つ一連の変数 のことを1次元配列と呼びます。配列内の個々の変数は配列要素と呼ばれます。
配列を定義するには、次の3つの手順を踏む必要があります。
まず、これらを個別に行う方法があります。
// 宣言 type varName[]; // 作成 varName = new type[size]; // 代入 varName[num] = value; |
まず、宣言ではtypeにJavaの有効なデータ型、varNameに配列の名前を指定し
ます。
次に、作成ではsizeに配列内の要素数を指定し、配列にメモリを割り当てるため
に new 演算子を用います。この場合、varName[0]からvarName[size-1]までの配
列要素が作成されます。
最後に、代入では num に0からsize-1 までの値を指定し、value に実際に代入
する値を指定します。
宣言と作成を一度に行う方法もあります。
// 宣言と作成 type varName[] = new type[size]; // 代入 varName[num] = value; |
宣言、作成、代入まで一度に行う方法もあります。
// 宣言、作成、代入 type varName[] = { e0, e1, …, en }; |
Javaでは任意の次元の配列を作成することができます。
配列を参照する変数を宣言するとき、個々の要素を指定するために指定する インデックスの個数(次元)を、大括弧([])の数で明示します。
// 一個のインデックスで要素を指定する場合 type varName1[]; // 二個のインデックスで要素を指定する場合 type varName2[][]; // 三個のインデックスで要素を指定する場合 type varName3[][][]; |
上の例では、varName3は、「type 型の要素を持つ三次元配列」を参照可能な 変数として定義されています。このとき、要素数を指定する仕組みはなく、任 意の要素数の配列を代入可能です。
実際に参照先の配列を作成するには、次の二つの仕組みを用います。
1.個々の要素を明示したリストを明記する
type varName[][] = { { e00, e01, …, e0x}, { e10, e11, …, e1y}, { e20, e21, …, e2z} } } |
多次元では、各要素がリストであるリストで初期化することができます。
上の例では、配列 varName の各要素が配列になっています。
多次元配列のサイズは、次の式で取得することができます。
varName.length
varNameには配列の名前を指定します。この式によって、個々の配列要素の数
を取得することができます。
次の構文を使用すると、個々の配列要素の数を取得することができます。
index には配列内の特定の要素を指定します。
e0からenには配列の要素を指定します。e0からenまでに、指定した型では扱 えない値が記述された場合、コンパイルエラーが発生します。
配列内の要素数は次の式で取得できます。
varName.length
#include <stdio.h> main(){ kake [11]; int i,j; for(i = 1, j = 1; i < 41; i++){ if(i % 4 == 0){ kake[j] = i; printf("[%d] = %d\n",j,kake[j]); j++; } } } |