配列の中身を取り出すのは初心者にはややこしいです。System.out.print();で変数名入れて取り出せたらいいのに。
for文をうまいこと使って配列の中の値を取得しなければなりません。
すぐに覚えられるわけでもないので、チート用にまとめてみました。
応用すれば値をすべて足すのも容易です。
Contents
配列 (1次元)の中身を1つだけ確認
配列の中身の要素を1つだけ取得する。
String[] week = {"月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"};
System.out.println(week[0]); //月曜
System.out.println(week[1]); //火曜
// 省略
System.out.println(week[6]); //日曜
配列 (1次元)の中身を全部確認
[ ] コ型のかっこが入ってもいいなら
デバッグ中によく使いそう。
String[] week = {"月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"};
System.out.println(Arrays.toString(week));
// 結果 : [月曜, 火曜, 水曜, 木曜, 金曜, 土曜, 日曜]
intもcharもdoubleなどでもArrays.toStringで中身を表示して確認できます。
シンプルにfor文で値を全て取得
初心者に馴染みのあるfor文。
String[] week = {"月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"};
for (int i = 0; i < 7; i++) {
System.out.println(week[i]);
}
シンプル + length使って値を全て取得
配列の長さを「変数名.length」で取得する。
String[] week = {"月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"};
for (int i = 0; i < week.length ; i++) {
System.out.println(week[i]);
}
拡張for文で値を全て取得
シンプルでいい。
String[] week = {"月曜", "火曜", "水曜", "木曜", "金曜", "土曜", "日曜"};
for(String day : week){
System.out.println(day);
}
上記例ではStringだが、例えばint型の配列を扱う時は for(int 変数名 : 配列の変数名 )というように配列の型合わせる必要がある。
2次元配列の中身を1つだけ確認
2次元配列の中身の要素を1つだけ取得する。
String[][] week = {{"月曜", "火曜", "水曜", "木曜", "金曜"}, {"土曜", "日曜"}};
System.out.println(week[0][0]); //月曜
System.out.println(week[0][1]); //火曜
// 省略
System.out.println(week[1][1]); //日曜
多次元配列の中身を全部確認
[ ] コ型のかっこが入ってもいいなら
2次元配列でも簡単に中身の確認ができる。
String[][] week = {{"月曜", "火曜", "水曜", "木曜", "金曜"}, {"土曜", "日曜"}};
System.out.println(Arrays.deepToString(week));
// 結果:[[月曜, 火曜, 水曜, 木曜, 金曜], [土曜, 日曜]]
2次元以上でもArrays.deepToStringで中身を表示して確認できます。
for文で多次元の値を1つずつ全て取得 length使う
for文 2次元
多次元になってくるとややこしい。2次元の場合。
String[][] week = {{"月曜", "火曜", "水曜", "木曜", "金曜"}, {"土曜", "日曜"}};
for (int i = 0; i < week.length; i++) { // week.lengthで1次元の配列の長さ
for (int k = 0; k < week[i].length; k++) { // week[i].lengthでi番目の配列の長さ
System.out.print(week[i][k] +" "); //月曜 火曜 水曜 木曜 金曜 土曜 日曜
}
}
for文 3次元
次元が増えるごとにfor文も増えていきます。3次元の場合。
String[][][] week = {{{"月曜", "火曜"},{ "水曜", "木曜", "金曜"}}, {{"土曜"},{ "日曜"}}};
for (int i = 0; i < week.length; i++) {
for (int k = 0; k < week[i].length; k++) {
// week[i][k].lengthでi番目の中のk番目の配列の長さ
for (int m = 0; m < week[i][k].length; m++) {
System.out.print(week[i][k][m] +" "); //月曜 火曜 水曜 木曜 金曜 土曜 日曜
}
}
}
拡張for文で値を1つずつ全部取得
拡張for文 2次元
2次元のサンプルコード。
String[][] week = {{"月曜", "火曜", "水曜", "木曜", "金曜"}, {"土曜", "日曜"}};
for(String[] day : week){ // 2次元配列に値を移行
for(String a : day){
System.out.print(a + " ");
}
}
拡張for文 3次元
3次元のサンプルコードです。
String[][][] week = {{{"月曜", "火曜"},{ "水曜", "木曜", "金曜"}}, {{"土曜"},{ "日曜"}}};
for(String[][] days : week){ // 2次元配列に値を移行
for(String[] day : days){ // 配列に値を移行
for(String a : day){
System.out.print(a + " ");
}
}
}
こちらも次元数に合わせてfor文が増えていきます。
拡張for文の方がわかりやすいです。
番外編
考えればわかるけれど、考えるのが面倒なので。
奇数・偶数で中身を取り出す
配列の中身を一つおきに取り出したいとき。
int[] num = {1,2,3,4,5,6,7,8,9};
for(int i = 0; i < num.length; i+=2){ // int i = 1にすると偶数が取り出される
System.out.println(num[i]); // 1 3 5 7 9
}
逆から取り出す
int[] num = {1,2,3,4,5,6,7,8,9};
for(int i = num.length-1; 0 <= i; i--){
System.out.println(num[i]); // 9 8 7 6 5 4 3 2 1
}
その他関連
配列の中身を取り出すわけではないけれど、配列を使ってあれやこれや。
さいごに
繰り返し文はややこしいです。次元はあまり増やしちゃいけないと聞きますが理由がわかりますね。
他にもあれば教えていただければと思います。