忍者ブログ

からすまる日誌 java

基本(7) 二次元配列を拡張forで取り出す

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

基本(7) 二次元配列を拡張forで取り出す

--->Main163_2.java
 
このforの条件文が理解できないといけない。
i(行)に関しては
i<scores.length
で済む。長さは「何階建てか」で戻ってくる。
 
問題はjをどう条件づけるか?
iが自動的に0-2階まで変化するので、そのフロアごとの部屋数、
j < scores[i].length;
で長さが分かる ←これ後で聞いて解決すること

分かった気がする。

内側のforは、iが入った状態でくるくるしているから、
内側に入った時点で配列が一時配列になっている。
その配列の長さは、現在のiに相当する、
scores[i].length;
 
だからそれでいいのではないだろうか。
 
 
--->Main163_2.java
 
package part1;
public class Main163_2 {
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  int[][] scores =
  { {10,20},//1行目
   {30,40,50},//2行目
   {60,70,80,90}//3行目
  };
  for (int i=0; i<scores.length; i++) {//行を表す
   for(int j=0; j < scores[i].length; j++) {//列を表す
    System.out.println("ただいまiは"+i);
    System.out.println("ただいまjは"+j);
    System.out.println(scores[i][j]);
   }
  }
  //System.out.println(scores.length);
  //System.out.println(scores[0].length);
 }
}
 

コードの左側の青い帯の部分をダブルクリックすると
そこにブレークポイントが撃ち込まれる
 
実行→デバック
ブレークポイントまで進む
f6押したら一行ずつ進む
  
f5を押すとメソッド本体を掘っていく
f7で元に戻る
 

もしウィンドウがおかしくなったら、
ウィンドウ→パークスぺくてぃぶ→パークスペクティブのリセット
で戻るよ
 
--->Main163_3.java
 
拡張forで二次元配列の内容を出力する
 
package part1;
public class Main163_3 {
 public static void main(String[] args) {
  // TODO 自動生成されたメソッド・スタブ
  int[][] scores =
  { {10,20},//1行目
   {30,40,50},//2行目
   {60,70,80,90}//3行目
  };
  for (int[] value : scores) {
   for(int value2:value) {
    System.out.println(value2);
   }
  }
 }
}
 
おわかりかな?
外側のforでは、valueのテーブルに「配列scoresの内容いっこ置いてくださいよ」といったとき、「ほいよ」と置かれたのが「1次元配列のかたまり」なのだ。
 
外側forの1回目で、valueに何が置かれたかというと、
{10,20}がかたまりでどんとおかれてる
 
内側のforでは、1次元配列の中身をいっこずつvalueのテーブルにおいてほしい。
 
よって、
 
外側のforではvalueのテーブルに「1次元配列」がどんとおかれるがゆえに、
テーブルのvalue側も「int[] value」という一次元配列の入れ物で用意していないと型が合わないのだ
 
さらに、
 
内側のforでは、value2のテーブルの上に置かれるのは、「そのvalueの中身いっこおいてくださいよ」だから、配列でなくて単体数値でよいのでint value2というテーブルで済むことになる。
 
PR

コメント

ブログ内検索

P R