ETH官方钱包

切換
舊版
前往
大廳
主題

Java Programming Lesson 06

ジャネス | 2011-07-31 06:28:11 | 巴幣 0 | 人氣 598

Java言語プログラミングレッスン上巻

★★★★★

第06章:for文

for文の構造

for ( 初期化; 條件式; 次の一歩 ) {
  繰り返す処理
}

for文
。初期化:繰り返しの準備、一度だけ実行
。條件式:繰り返しを続ける條件
。次の一歩:繰り返す処理が1回分終わった後
      繰り返しを次に進む
      條件式の値がfalseになったら繰り返しは終了

Count1.java(0から2まで表示する)
----------
public class Count1 {
  public static void main(String[] args) {
    System.out.println(0);
    System.out.println(1);
    System.out.println(2);
    System.out.println("end");
  }
}
----------
畫面に
javac Count1.java
java Count1

0
1
2
end
----------

Count2.java(for文で0から2まで表示する)
----------
public class Count2 {
  public static void main(String[] args) {
    for (int i = 0; i < 3; i++) {
      System.out.println(i);
    }
    System.out.println("end");
  }
}
----------
畫面に
javac Count2.java
java Count2

0
1
2
end
----------

Count3.java(2乗と3乗の計算、繰り返す処理を増やす)
----------
public class Count3 {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      System.out.print(i + "の2乗は" + (i * i) + "で、");
      System.out.println("3乗は" + (i * i * i) + "です。");
    }
    System.out.println("end");
  }
}
----------
畫面に
javac Count3.java
java Count3

0の2乗は0で、3乗は0です。
1の2乗は1で、3乗は1です。
2の2乗は4で、3乗は8です。
3の2乗は9で、3乗は27です。
4の2乗は16で、3乗は64です。
5の2乗は25で、3乗は125です。
6の2乗は36で、3乗は216です。
7の2乗は49で、3乗は343です。
8の2乗は64で、3乗は512です。
9の2乗は81で、3乗は729です。
end
----------

2重のfor文の構造

for ( ) {
  System.out.print
  for ( ) {
    System.out.print
  }
  System.out.println
}

DrawGraph1.java(グラフの表示、2重のfor文)
----------
public class DrawGraph1 {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      System.out.print(i + ":");
      for (int j = 0; j < i; j++) {
        System.out.print("*");
      }
      System.out.println("");
    }
  }
}
----------
畫面に
javac DrawGraph1.java
java DrawGraph1

0:
1:*
2:**
3:***
4:****
5:*****
6:******
7:*******
8:********
9:*********
----------

CountE.java(コンパイルエラーになる)
----------
public class CountE {
  public static void main(String[] args) {
    for (int i = 0; i < 3; i++) {
      System.out.println(i);
    }
    System.out.println("i = " + i);
    System.out.println("end");
  }
}
----------
畫面に
javac CountE.java
java CountE

CountE.java:6: シンボルを見つけられません。
シンボル: 変數 i
場所  : CountE の クラス
    System.out.println("i = " + i);
                  ^
エラー 1 個
----------
(変數iがfor文の初期化の部分で宣言されているため、for文の外では使えないからです)

CountOK.java(変數iをfor文の前で宣言すればコンパイルエラーにならない)
----------
public class CountOK {
  public static void main(String[] args) {
    int i;
    for (i = 0; i < 3; i++) {
      System.out.println(i);
    }
    System.out.println("i = " + i);
    System.out.println("end");
  }
}
----------
畫面に
javac CountOK.java
java CountOK

0
1
2
i = 3
end
----------

學んだこと
。for文
。二重for文

練習問題6-1
for (int i = 0; i < 10; i++) {
  System.out.println(i);
}

正しいものに○、誤っているものに?を付けてください。
? (1) 0~10までの數が表示される。<0~9までの數が表示される>
? (2) 9個の數字が表示される。  <10個の數字が表示される>
? (3) 式i++は10回評価される。  <11回評価される>
○ (4) 文System.out.println(i);は10回実行される。
? (5) このfor文が終わった後に  <エラーになる>
    System.out.println(i);
    という文を追加したとしたら、そこで10と表示される。

練習問題6-2
0~9の2乗のグラフを描くプログラム

DrawGraph2.java(グラフの表示、2重のfor文)
----------
public class DrawGraph2 {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      System.out.print(i + ":");
      for (int j = 0; j < i * i; j++) {
        System.out.print("*");
      }
      System.out.println("");
    }
  }
}
----------
畫面に
javac DrawGraph2.java
java DrawGraph2

0:
1:*
2:****
3:*********
4:****************
5:*************************
6:************************************
7:*************************************************
8:****************************************************************
9:*********************************************************************************
----------

練習問題6-3
以下のプログラムに間違いがあります。実行すると何が起きますか。なぜですか。

DrawGraph3.java(間違いさがし)
----------
public class DrawGraph3 {
  public static void main(String[] args) {
    for (int i = 0; i < 10; i++) {
      System.out.print(i + ":");
      for (int j = 0; j < i * i; i++) {
        System.out.print("*");
      }
      System.out.println("");
    }
  }
}
----------
畫面に
javac DrawGraph3.java
java DrawGraph3

********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
********************************************************************************
----------

実行するとプログラムが止まりません。
なぜかというと、內側のfor文の次の一歩に誤りがあるからです。
j++と書くべきところを、i++と書いています。
変數jの値を増やさない限り、繰り返す処理が終わらない。

練習問題6-4

KuuKuu.java(九九の表を作るプログラム)
----------
public class KuuKuu {
  public static void main(String[] args) {
    for (int i = 1; i < 10; i++) {
      for (int j = 1; j < 10; j++) {
        System.out.print(i + "*" + j + "=" + (i * j) + ", ");
      }
      System.out.println("");
    }
  }
}
----------
畫面に
javac KuuKuu.java
java KuuKuu

1*1=1, 1*2=2, 1*3=3, 1*4=4, 1*5=5, 1*6=6, 1*7=7, 1*8=8, 1*9=9,
2*1=2, 2*2=4, 2*3=6, 2*4=8, 2*5=10, 2*6=12, 2*7=14, 2*8=16, 2*9=18,
3*1=3, 3*2=6, 3*3=9, 3*4=12, 3*5=15, 3*6=18, 3*7=21, 3*8=24, 3*9=27,
4*1=4, 4*2=8, 4*3=12, 4*4=16, 4*5=20, 4*6=24, 4*7=28, 4*8=32, 4*9=36,
5*1=5, 5*2=10, 5*3=15, 5*4=20, 5*5=25, 5*6=30, 5*7=35, 5*8=40, 5*9=45,
6*1=6, 6*2=12, 6*3=18, 6*4=24, 6*5=30, 6*6=36, 6*7=42, 6*8=48, 6*9=54,
7*1=7, 7*2=14, 7*3=21, 7*4=28, 7*5=35, 7*6=42, 7*7=49, 7*8=56, 7*9=63,
8*1=8, 8*2=16, 8*3=24, 8*4=32, 8*5=40, 8*6=48, 8*7=56, 8*8=64, 8*9=72,
9*1=9, 9*2=18, 9*3=27, 9*4=36, 9*5=45, 9*6=54, 9*7=63, 9*8=72, 9*9=81,
----------

KuuKuu1.java(九九の表を作るプログラム、桁をそろえた例)
----------
public class KuuKuu1 {
  public static void main(String[] args) {
    for (int i = 1; i < 10; i++) {
      for (int j = 1; j < 10; j++) {
        System.out.print(i + "*" + j + "=");
        if (i * j < 10) {
          System.out.print(" ");
        } else {
          System.out.print("");
        }
        System.out.print((i * j) + ", ");
      }
      System.out.println("");
    }
  }
}
----------
畫面に
javac KuuKuu1.java
java KuuKuu1

1*1= 1, 1*2= 2, 1*3= 3, 1*4= 4, 1*5= 5, 1*6= 6, 1*7= 7, 1*8= 8, 1*9= 9,
2*1= 2, 2*2= 4, 2*3= 6, 2*4= 8, 2*5=10, 2*6=12, 2*7=14, 2*8=16, 2*9=18,
3*1= 3, 3*2= 6, 3*3= 9, 3*4=12, 3*5=15, 3*6=18, 3*7=21, 3*8=24, 3*9=27,
4*1= 4, 4*2= 8, 4*3=12, 4*4=16, 4*5=20, 4*6=24, 4*7=28, 4*8=32, 4*9=36,
5*1= 5, 5*2=10, 5*3=15, 5*4=20, 5*5=25, 5*6=30, 5*7=35, 5*8=40, 5*9=45,
6*1= 6, 6*2=12, 6*3=18, 6*4=24, 6*5=30, 6*6=36, 6*7=42, 6*8=48, 6*9=54,
7*1= 7, 7*2=14, 7*3=21, 7*4=28, 7*5=35, 7*6=42, 7*7=49, 7*8=56, 7*9=63,
8*1= 8, 8*2=16, 8*3=24, 8*4=32, 8*5=40, 8*6=48, 8*7=56, 8*8=64, 8*9=72,
9*1= 9, 9*2=18, 9*3=27, 9*4=36, 9*5=45, 9*6=54, 9*7=63, 9*8=72, 9*9=81,
----------

DrawKukuTable2.java(printfメソッドを使って桁をそろえた例)
----------
public class DrawKukuTable2 {
  public static void main(String[] args) {
    for (int i = 1; i < 10; i++) {
      for (int j = 1; j < 10; j++) {
        System.out.printf("%d*%d=%-4d", i, j, i * j);
      }
      System.out.println("");
    }
  }
}
----------
畫面に
javac DrawKukuTable2.java
java DrawKukuTable2

1*1=1  1*2=2  1*3=3  1*4=4  1*5=5  1*6=6  1*7=7  1*8=8  1*9=9
2*1=2  2*2=4  2*3=6  2*4=8  2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*1=3  3*2=6  3*3=9  3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*1=4  4*2=8  4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*1=5  5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*1=6  6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54
7*1=7  7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63
8*1=8  8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72
9*1=9  9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81
----------
(%-4dは書式指定文字列で、數字の表示領域を4文字分確保し、左詰めにしています)

★★★★★

第6章 終わり

創作回應

相關創作

更多創作