import java.io.*; public class Add{ static public void main(String[] argv) throws IOException{ DataInputStream istream=new DataInputStream(System.in); int box1=Integer.parseInt(istream.readLine()); // (1) int box2=Integer.parseInt(istream.readLine()); int sum=box1+box2; System.out.println(sum); } }を配列を用いて書き直した例をあげる.
import java.io.*; public class AddArray{ static public void main(String[] argv) throws IOException{ DataInputStream istream=new DataInputStream(System.in); int[] box=new int[2]; // int[] box; box=new int[2]; と同じ意味 int sum=0; // int sum; sum=0; と同じ意味 box[0]=Integer.parseInt(istream.readLine()); sum=sum+box[0]; // sum+=box[0]; と書いても同じ意味 box[1]=Integer.parseInt(istream.readLine()); sum=sum+box[1]; System.out.println(sum); } }あるデータ型の配列の型の表記は型名の後に '[]'をつける.したがって, box が int 型の配列の型を指す変数だということを宣言するには,
int[] box;のように書く.
配列のサイズを指定するには,
box=new int[2];のように,new の後に型名を書き, '[',']'の中にサイズを表す.添字は'サイ ズ-1'まで指定でき,それを超える値,負の値を指定するとエラーになる.
配列の要素を参照したり配列の要素に代入する時は,配列型の変数の後ろに' [',']'で囲んで添字を書き,添字によってどの要素かを指定する.添字は int型でなくてはいけない.
float型,double型の変数を添字に使うのはキャスト演算子「(型名)式」でint 型に変換すれば可能だが,そうする必要がある場合の多くはその変数は本来 int型にすべきである.特に,ループの繰り返しを判定する変数などを, float, doubleにすると誤差により,ループの回数が意図しない回数になる可 能性がある.この場合は大(double)は小(int)を兼ねない.
import java.io.*; public class AddVar{ static public void main(String[] argv) throws IOException{ DataInputStream istream=new DataInputStream(System.in); System.out.println("Input number of elements"); int n=Integer.parseInt(istream.readLine()); int[] box=new int[n]; // (1) int sum=0; System.out.println("Input numbers"); int i=0; while(i< n){ box[i]=Integer.parseInt(istream.readLine()); sum+=box[i]; i++; } System.out.println("Result is "+sum); } }
この中で出てくる.i++ という式は,i=i+1 とほぼ同じ意味である.この手 の略記法はC言語にならっている.C言語に由来する略記法としては,
x = x + y -> x += y x = x - y -> x -= y x = x * y -> x *= y x = x / y -> x /= y x = x % y -> x %= yなどがある.
ここで導入された while文は
while (条件式) 実行文という構文を持ち,条件式が成り立つ(評価結果が true になる)ときだけ実行 文を1度実行し,その実行後に再び条件式をチェックする動作を繰り返す.た とえば,nが3の時は,while文の実行結果は
box[0]=Integer.parseInt(istream.readLine()); sum+=box[0]; box[1]=Integer.parseInt(istream.readLine()); sum+=box[1]; box[2]=Integer.parseInt(istream.readLine()); sum+=box[2];の実行結果と同じになる.
(1)の行のように,配列のサイズは変数で指定することもできるのが,動的メモリ 管理の機能を持つJavaの特徴の1つである.