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章 終わり
★★★★★
第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章 終わり