未分類

配列の応用

投稿日:

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

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

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

関連記事

サンプルイメージ

for文のしくみを知る

激レアキャラをゲットするまでは・・・→レアガチャを引き続ける 私たちの生活に朝起きる、歯を磨く、朝食を食べる、学校に行く・・・といった「繰り返し処理」を行っています。 Javaでは、このような繰り返し …

プログラム

プログラムのしくみ

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

サンプルイメージ

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

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

サンプルイメージ

Android Studioインストール&日本語化

      まずAndroid StudioとGoogle検索して、1番上の項目を選択してください。 下記の画面になるので、最新バージョンをダウンロードしましょう。 DOWNLOAD ANDROID …

サンプルイメージ

練習問題(クラスの機能)

      練習9-1 下図の様な実行結果となるように下のプログラムの空欄を埋めて実行してください。 練習9-2 下記のような実行結果となるようにShohinクラスを作成してください。 練習9-3 下 …