第八章 
 〜基本編〜
 一次元配列
   いよいよJavaの講座も中間へとたどりついてきたです〜
  この配列を取得することによって、一通りのプログラムを組むことが
  可能になるですね!配列と次にやる例外処理についてやったら、
  簡単なゲームを作ってみたいと思ってるです〜。

 配列って何?
   それでは、本題に入っていくです〜
  配列というのは、変数がまとまってできたものです。
  使い方としては、同じような集まりの変数をたくさん作るのではなくて
  1つの配列としてまとめておくということです。
   具体的には、5人の漫画の冊数を変数に入れておきたいとき変数では、
  int a=5, b=3, c=6, d=10, e=1;
  と言ったように面倒ですね!
   配列を使うと、こうなるです。
  int[] arr = {5, 3, 6, 10, 1};
  これは、配列の定義の方法の1つですが、int型の配列名arrを定義して、
  同時に初期化しているです。
  実際に、この説明のプログラムを作ってみるです〜
  その後に詳しく説明するです。
サンプルプログラム8_1
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
   10:
class Rei8_1{
    public static void main(String[] args){
        int[] arr = {5, 3, 6, 10, 1};

        for(int i=0; i<arr.length; i++){
            System.out.println
                (i + "番目の漫画の冊数は" + arr[i] + "冊です");
        }
    }
}

   最初に説明したのが3行目にあたるです。
  配列の初期化をしてるとさっき言ったですね!
  具体的には、= より右に定義している { と }の間に書いた個数分配列に
  割り当てられるです。(今回は5つですね!)
  イメージ的には↓のような感じです!

要素番号0 1 2 3 4
arr 5 3 6 10 1

   上にある数値は、添え字と言って、意味は要素番号です。
  要素番号は0から始まることに気をつけてほしいです。
  ここでは、5つの値で初期化したので要素番号は0〜4の5つです。
  配列のそれぞれの要素にアクセスしたい(使いたい)場合は
  7行目を見てほしいです。
  arr[i]がそうです。for文の制御変数iを使ってアクセスしてるです。
  ここのiには0〜4が入るです(なぜ4が入るのかは、のちほど)
  例えば、arr[i]のiの値が0だとしたら、要素番号0の値を示すです
  つまり値5が出てくるです〜
  それぞれ、iが1だったら3、iが2だったら6といった感じになっていくです〜
   なぜiの値が0〜4になるのか説明するです。
  iが0から始まるのは、for文でiを0で初期化しているからですね!
  では、いったい4はどこから・・・
  実は、arr.lengthが答えをにぎっているです。
  これは、配列の要素数を取得するときに使うです。使い方は、
  配列名.lengthで、その配列の要素数を取得するです。
  便利なのでよく使うです〜。
  ここでは5が取得できるです!(4ではないです)
  4ではないので比較するときは、i<arr.lengthと書いてあるですね!
  これでiが5より小さい。つまりiが4以下のとき繰り返えされるです。
  何度も言うですが、ここ結構間違いやすいので注意をしておうです!
  別に、arr.lengthの部分を5と書いても全然問題はないですが・・・
  ここは、やっぱり配列名.lengthがお勧めです〜

  System.out.printlnは、今回2行にして書いてみたです。
  この書き方はけして間違いでは、ないです。

 配列の宣言の仕方
  大きく分けて2つのやり方があるです。
   1 配列を宣言と同時に初期化する方法
   2 配列の大きさを決めておいて、後から値を代入していく方法
  1のやり方は、さっきやったことですね!
  では、2のやり方を説明していくです〜
  次のサンプルプログラムをみてほしいです。
サンプルプログラム8_2
   1:
   2:
   3:
   4:
   5:
   6:
   7:
   8:
   9:
   10:
   11:
   12:
   13:
   14:
   15:
   16:
   17:
   18:
   19:
   20:
   21:
   22:
   23:
   24:
   25:
   26:
   27:
   28:
   29:
import java.io.*;

class Rei8_2{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new
            BufferedReader(new InputStreamReader(System.in));

        int[] arr;
        arr = new int[10];

        String tmp;

        //配列に値を代入していく
        for(int i=0; i<arr.length; i++){
            System.out.print("数値を入力:");
            tmp = br.readLine();

            arr[i] = Integer.parseInt(tmp);
        }

        //代入した値をすべて足す
        int sum=0;
        for(int i=0; i<arr.length; i++){
            sum += arr[i];
        }

        System.out.print("入力した数値の和は:" + sum);
    }
}

   今回のサンプルプログラムは、配列を宣言して、入力した値を配列に格納し、
  格納した値の合計を求める、合計を求めるアルゴリズムも加わってるです〜
  8行目と9行目について説明するです。
   8行目は、int型の配列arrを宣言しているです。
  9行目は、宣言した配列をどのくらいの大きさで確保するかを書くです。
  詳しく言うと、宣言した配列を9行目で実際にメモリに確保するです〜
   配列への代入は18行目で行っているです。代入の仕方は、ほとんど変数と一緒
  ですね!配列の添え字(要素番号)に値を代入していく形になっているです。
  実は、この2行を1行にまとめることもできるです。
  int[] arr = new int[10];
  このように書けば1行で書くことができるです。
  この書き方どこかで見たことないですかね?
  これは、BufferedReaderクラスを定義するときと同じ書き方ですね!
  ってことは、BufferedReaderクラスを定義するときも・・・
  2行に分けて書くことも可能なのです〜
   
   配列とfor文は、セットで使うとさらに便利なことにも気がついてほしいです〜
   一次元配列ってタイトルにあるように、今回やった配列は一次元配列です。
  そして二次元配列というのもあるです〜。それについては次回やるです〜


  今回のポイント
  @ 配列は、同じ集まりの変数を1つにして利用するときに使う
  A 配列は、宣言と同時に初期化できる。
     変数の型[] 変数名 = {値1, 値2, ・・・}; ←最後の;を忘れない
  B 配列の定義の仕方
     変数の型[] 変数名;
     変数名 = new 変数の型[配列の要素数];
    または
     変数の型[] 変数名 = new 変数の型[配列の要素数];

  TOPに戻る     Java講座に戻る