未分類

配列の応用

投稿日:

配列の要素数を調べるコードを記述します。配列の要素数(ハコの数)は、配列の長さ(大きさ)と呼ばれています。

Javaでは、配列要素に.(ピリオド)をはさんでlengthと記述すると、配列の要素数をあらわすことができるのです。たとえば、testがさす配列については、次のようにして要素数を調べることができます。

test.length  testがさす配列要素の数をあらわします

配列要素の数を知ることができると、コードの記述が楽になります。これまでは配列の長さである「5」を繰り返し文の中に指定してきました。

しかし、異なる冒険に出るたびにコードを、新しく作成しなければならなくなった場合はどうすればいいでしょうか?「5」という数字を、新しいパーティーの人数に訂正しなければなりません。

こんなときコードの繰り返し文の中で、.lengthを利用しておくと便利です。

Sample7_06_7の7行目をfor(int i=0; test.length; i++){にしておけば、パーティーの人数が違う冒険についてコードを書くことになっても、繰り返し条件を変更する必要がありません。

配列の内容をソートする

さて今度は配列を使って、キャラクターの体力を並べ替えることにします。値を順番に並び替えることを、ソート(sort)といいます。配列は要素に複数の値を格納することができるので、並べ替えをするコードに利用すると便利です。

①まず最初に、配列の各体力を配列の先頭の体力(test[0])と比較していきます。比較した体力の方が大きい場合は、先頭の体力と入れ替えます。すると、配列の先頭の体力に最大値を格納できます。

  • 22 80 57 60 50  test[t]とtest[0]を比較して入れ替える。
  • 80 22 57 60 50  test[t]のほうが大きい場合に入れ替える。
  • 80 22 57 60 50  つまり、test[t]>test[s](s=0)のときに入れ替える。

②これで、一番大きな値である配列の先頭の体力が決まりました。そこで残りの要素についても同じ処理を繰り返します。つまり、残りの体力を配列の2番目の体力(test[1])と比較して、大きい場合に入れ替えます。すると、最終的に2番目に大きい数値が2番目の体力となります。

  • 80 22 57 60 50  test[t]とtest[1]を比較して入れ替える。
  • 80 57 22 60 50  test[t]の方が大きい場合に入れ替える。
  • 80 60 22 57 50  つまり、test[t]>test[s](s=1)のときに入れ替える。

③順に繰り返すと、配列のソートが完了します。

80 60 57 50 22

体力を入れ替えるためには、入れ替えるものと同じ型の作業用のエリア(変数)が必要です。そのため作業用の変数tmpを使っています。

多次元配列のしくみを知る

Javaでは、「配列の要素をさらに配列とする」ことで、2次元以上にハコが並んだイメージをもつ多次元配列を作ることもできます。

2次元配列を準備するコードをみてください。

  • int[][] test;        ①2次元配列の宣言です
  • test = new int[2][5];   ②配列要素を確保

2次元配列の宣言は、①のようになります。そして、int型の値を2×5=10個、記憶するには、②のように要素を確保します。

先ほどの5人分の「体力」「魔力」という2つの項目を整理してみましょう。

このコードでは、test「0」「●」に体力を、test[1][●]に魔力を格納することにしました。これを、for文で出力しています。

多次元配列の書き方

2次元配列もいろいろな書きあらわし方ができます。配列の宣言と要素の確保を同時に行う文を記述します。

int[][] test = new int[2][5];  1つの文で2次元配列を準備

また、宣言・要素の確保時に値を代入して初期化することもできます。多次元配列の場合には、{}をさらにネストして記述します。

int[][] test = {{80,60,22,50,75},{90,55,68,72,58}}; 2次元配列を初期化

Sample7_07_10のコードを書き換えたものです。なお、Javaの多次元配列では、各要素の数がそろっている必要はありません。

int[][] test = {{80,60,22,50},{90,55,68,72},{33,75,63}}; いびつな配列もつくれます

test.lengthは、この配列の全体の長さを意味します。さらに、各配列要素がいくつの配列要素をもつかを調べるには、

test[添字].length

と記述します。上のコードでは繰り返し文の処理が3回繰り返され、各要素の配列の長さが出力されているのがわかります。

-未分類

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

プログラム

プログラムのしくみ

ワープロ、表計算ソフトのような「プログラム」を使うことは、文字を表示し、書式を整え、印刷するといった特定の「仕事」をコンピューターに指示し、処理させないといけません。 プログラミング言語 Java コ …

サンプルイメージ

論理演算子

これまでいろいろな条件判断文を記述してきました。もっと複雑な条件を書ければ便利な場合があります。 スコアが「Sランク」であり、かつ、ゴールドがあったら・・・ →最強の装備にする このような複雑な条件を …

サンプルイメージ

クラスライブラリのしくみ

                 今まで、クラスの基本について学びました。これまでは以下のような手順でクラスを作成してきました。 クラスを設計するコードを書く → クラスを宣言するクラスを利用するコー …

サンプルイメージ

配列のしくみ①

プログラムの中ではたくさんのデータを扱う場合があります。例えば、50体のキャラクターの攻撃力や体力や属性を扱うプログラムを考えてみましょう。 たくさんの変数が登場するので、コードが複雑で読みにくくなり …

サンプルイメージ

式と演算子

式のしくみを知る Javaの「式」の多くは、 演算子(演算するもの)とオペランド(演算の対象) を組み合わせてつくられています。たとえば、「1 + 2」の場合は、「+」が演算子、「1」と「2 …