Java - for文


■ページ目次

Top

繰返し制御文

Top

for 文

Top
更新式がインクリメントの for 文
■例題
  1. 0から9までの数字を表示するアプリケーション"For11.java"を作成してください。
    1. public class For11 {
    2. public static void main(String[] args) {
    3. for (int i = 0; i < 10; i++) {
    4. System.out.println(i);
    5. }
    6. }
    7. }

    □ 実行結果

    $ java For11
    0
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
Top
■実習
  1. コマンドラインから入力した数値の段の九九を表示するアプリケーション"Kuku01.java"を作成してください。
    1. public class Kuku01 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. // ここにコードを記述してください。
    5. System.out.println();
    6. }
    7. }

    □ 実行結果

    $ java Kuku01 4
    4 8 12 16 20 24 28 32 36
    
  2. コマンドラインから入力した数値の数だけ、星印(*)を横に並べるアプリケーション"StarPrint01.java"を作成してください。
    1. public class StarPrint01 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. // ここにコードを記述してください。
    5. System.out.println();
    6. }
    7. }

    □ 実行結果

    $ java StarPrint01 4
    ****
    
Top
更新式がデクリメントの for 文
■例題
  1. 9から0までの数字を表示するアプリケーション"For21.java"を作成してください。
    1. public class For21 {
    2. public static void main(String[] args) {
    3. for (int i = 9; i >= 0; i--) {
    4. System.out.println(i);
    5. }
    6. }
    7. }

    □ 実行結果

    $ java For21
    9
    8
    7
    6
    5
    4
    3
    2
    1
    0
    
Top
■実習
Top
カウンターをループ中の演算に使った for 文
■例題
  1. 0から9までの合計を求めるアプリケーション"For01.java"を作成してください。
    1. public class For01 {
    2. public static void main(String[] args) {
    3. int sum = 0; // 合計変数
    4. for (int i = 1; i < 10; i++) {
    5. sum += i; // 合計変数にカウンター値を加える。
    6. }
    7. System.out.println("合計は" + sum + "です。");
    8. }
    9. }

    □ 実行結果

    $ java For01
    合計は45です。
    
Top
■実習
  1. 1+2+3+...のように、順に加算していき、コマンドラインで指定した数を超えたときの合計と、最後に加算した数を画面出力するアプリケーション"Sum01.java"を作成してください。
    1. public class Sum01 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. int s = 0;
    5. // ここにコードを記述してください。
    6. }
    7. }

    □ 実行結果

    $ java Sum01 1000
    合計 = 1035, 最後に加算した数 = 45
    
Top
更新式がインクリメント / デクリメント以外の for 文
■例題
  1. "For01.java"を奇数のみを加算するようなアプリケーション"For02.java"に改造してください。
    1. public class For02 {
    2. public static void main(String[] args) {
    3. int sum = 0; // 合計変数
    4. for (int i = 1; i < 10; i += 2) { // 2ずつカウントアップ
    5. sum += i; // 合計変数にカウンター値を加える。
    6. }
    7. System.out.println("合計は" + sum + "です。");
    8. }
    9. }

    □ 実行結果

    $ java For02 
    合計は25です。
    
Top
■実習
  1. コマンドラインから入力した数値を超えるまで、1から等比が2の等比級数を表示するアプリケーション"Progression01.java"を作成してください。
    1. public class Progression01 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. // ここにコードを記述してください。
    5. System.out.println();
    6. }
    7. }

    □ 実行結果

    $ java Progression01 1000
    1 2 4 8 16 32 64 128 256 512
    
Top
for 文のネスト
■例題
  1. 数字0, 1, 2のすべての組み合わせを表示するアプリケーション"Combination01.java"を作成してください。
    1. public class Combination01 {
    2. public static void main(String[] args) {
    3. for (int i = 0; i <= 2; i++) {
    4. for (int j = 0; j <= 2; j++) {
    5. System.out.println(i + ", " + j);
    6. }
    7. }
    8. }
    9. }

    □ 実行結果

    $ java Combination01
    0, 0
    0, 1
    0, 2
    1, 0
    1, 1
    1, 2
    2, 0
    2, 1
    2, 2
    
Top
実習
  1. コマンドラインから入力した数値の数だけ、星印(*)を正方形に並べるアプリケーション"StarPrint02.java"を作成してください。
  2. □ 実行結果

    $ java StarPrint02 4
    ****
    ****
    ****
    ****
    
  3. 下の実行結果を参考にして、アプリケーションを改造("StarPrint03.java")してください。
  4. □ 実行結果

    $ java StarPrint03 4
    *
    **
    ***
    ****
    
  5. (オプション)
    さらに、下の実行結果を参考にして、アプリケーションを改造("StarPrint04.java")してください。
  6. □ 実行結果

    $ java StarPrint04 4
    ****
    ***
    **
    *
    
  7. 九九の表を表示するアプリケーション"Kuku02.java"を作成してください。
    1. public class Kuku02 {
    2. public static void main(String[] args) {
    3. // ここにコードを記述してください。
    4. System.out.println();
    5. }
    6. }

    □ 実行結果

    $ java Kuku02
    1 2 3 4 5 6 7 8 9
    2 4 6 8 10 12 14 16 18
    3 6 9 12 15 18 21 24 27
    4 8 12 16 20 24 28 32 36
    5 10 15 20 25 30 35 40 45
    6 12 18 24 30 36 42 48 54
    7 14 21 28 35 42 49 56 63
    8 16 24 32 40 48 56 64 72
    9 18 27 36 45 54 63 72 81
    
Top
■実習
    □ forループ

  1. コマンドラインから指定した数値の2のべき乗を求めるアプリケーション"Power01.java"を作成してください。なお、計算結果は、double型に収まる範囲内とします。
    1. public class Power01 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. double s = 1;
    5. // ここにコードを記述してください。
    6. System.out.println("s = " + s);
    7. }
    8. }

    □ 実行結果

    $ java Power01 10
    s = 1024.0
    
    $ java Power01 100
    s = 1.2676506002282294E30
    
  2. コマンドラインから指定したけた数分の9を2乗した数を求めるアプリケーション"All9.java"を作成してください。なお、計算結果は、long型に収まる範囲内とします。
    1. public class All9 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. long r = 1;
    5. // ここにコードを記述してください。
    6. System.out.println(r + " * " + r + " = " + r * r);
    7. }
    8. }

    □ 実行結果

    $ java All9 2
    99 * 99 = 9801
    
  3. コマンドラインから指定したけた数分の1を2乗した数を求めるアプリケーション"All1.java"を作成してください。なお、計算結果は、long型に収まる範囲内とします。
    1. public class All1 {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. long r = 1;
    5. // ここにコードを記述してください。
    6. System.out.println(r + " * " + r + " = " + r * r);
    7. }
    8. }

    □ 実行結果

    $ java All1 4
    1111 * 1111 = 1234321
    
  4. コマンドラインから入力した数値が素数か否かを判定するアプリケーション"IsPrimeNumber.java"を作成してください。
    ただし、メッセージは素数でない場合のみの出力でかまいません。
    1. public class IsPrimeNumber {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. // ここにコードを記述してください。
    5. }
    6. }

    □ 実行結果

    $ java IsPrimeNumber 7 <-- 素数の場合、
                <-- 何も出力されない。
    
    $ java IsPrimeNumber 8   <-- 素数でない場合、
    8 is not a prime number.  <-- メッセージが出力される。
    
  5. (オプション)
    上記アプリケーションで、素数の場合にも、メッセージが出力されるように改造("IsPrimeNumber2.java")してください。


  6. コマンドラインから2つの文字を指定し、最初の文字から2つ目の文字までのUnicodeをプリントするアプリケーション"CodePrint03.java"を作成してください。
    1. public class CodePrint03 {
    2. public static void main(String[] args) {
    3. // ここにコードを記述してください。
    4. for ( /* ここにコードを記述してください。*/ ) {
    5. System.out.println("'" + (char)i + "': " + Integer.toHexString(i));
    6. }
    7. }
    8. }

    □ 実行結果

    $ java CodePrint03 あ お
    'あ': 3042
    'ぃ': 3043
    'い': 3044
    'ぅ': 3045
    'う': 3046
    'ぇ': 3047
    'え': 3048
    'ぉ': 3049
    'お': 304a
    
  7. コマンドラインから2つの文字を指定し、最初の文字から2つ目の文字までの暗号化された文字をプリントするアプリケーション"Encoding02.java"を作成してください。ここで、暗号化はcharの下位2ビットをビット反転することで実現します。
    1. public class Encoding02 {
    2. public static void main(String[] args) {
    3. int a0 = args[0].charAt(0);
    4. int a1 = args[1].charAt(0);
    5. int key = 0x3;
    6. // ここにコードを記述してください。
    7. System.out.println((char)i + "(" + Integer.toBinaryString(i)
    8. + ") encode to: "
    9. + (char)b + "(" + Integer.toBinaryString(b) + ")");
    10. }
    11. }
    12. }

    □ 実行結果

    $ java  Encoding02 0 9
    0(110000) encode to: 3(110011)
    1(110001) encode to: 2(110010)
    2(110010) encode to: 1(110001)
    3(110011) encode to: 0(110000)
    4(110100) encode to: 7(110111)
    5(110101) encode to: 6(110110)
    6(110110) encode to: 5(110101)
    7(110111) encode to: 4(110100)
    8(111000) encode to: ;(111011)
    9(111001) encode to: :(111010)
    
  8. モンテカルロ法を用いて円周率πの値を求めるアプリケーション"MonteCarlo.java"を作成してください。なお、乱数の生成回数はコマンドラインから指定します。
    1. public class MonteCarlo {
    2. public static void main(String[] args) {
    3. int n = Integer.parseInt(args[0]);
    4. double x, y;
    5. double pi;
    6. int c = 0;
    7. // ここにコードを記述してください。
    8. pi = 4d * c / n;
    9. System.out.println("pi = " + pi);
    10. }
    11. }
    $ java MonteCarlo 1000
    pi = 3.184
    
    $ java MonteCarlo 10000
    pi = 3.1308
    
    □ 2重forループ

  9. 下の実行結果を参考にして、アプリケーション"StarPrint02.java"を改造("StarPrint05.java")してください。
  10. □ 実行結果

    $ java StarPrint05 4
    ****
     ***
      **
       *
    
  11. さらに、下の実行結果を参考にして、アプリケーションを改造("StarPrint06.java")してください。
  12. □ 実行結果

    $ java StarPrint06 4
       *
      **
     ***
    ****
    
  13. (オプション)
    さらに、下の実行結果を参考にして、アプリケーションを改造("StarPrint07.java")してください。
  14. □ 実行結果

    $ java StarPrint07 4
       **
      ****
     ******
    ********
     ******
      ****
       **
    
  15. 九九の表を画面出力するアプリケーション"Kuku02.java"の出力を、下記の実行結果のようになるようにしてください。("Kuku03.java")
  16. □ 実行結果

    $ java Kuku03
      1  2  3  4  5  6  7  8  9
      2  4  6  8 10 12 14 16 18
      3  6  9 12 15 18 21 24 27
      4  8 12 16 20 24 28 32 36
      5 10 15 20 25 30 35 40 45
      6 12 18 24 30 36 42 48 54
      7 14 21 28 35 42 49 56 63
      8 16 24 32 40 48 56 64 72
      9 18 27 36 45 54 63 72 81
    
  17. 0から999までの数字を画面出力するアプリケーション"For12.java"を作成してください。ただし、1行に出力する数値の数は、コマンドラインから指定するようにしてください。
    1. public class For12 {
    2. public static void main(String[] args) {
    3. int s = Integer.parseInt(args[0]);
    4. for (// ここにコードを記述してください。) {
    5. for (// ここにコードを記述してください。) {
    6. System.out.print(j + " ");
    7. }
    8. System.out.println();
    9. }
    10. }
    11. }

    □ 実行結果

    $ java For12 18
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
    36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
    54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
    72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
    90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
    108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
    126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
      : (中略)
    972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989
    990 991 992 993 994 995 996 997 998 999
    

  18. 上記アプリケーション"For12.java"で、2 重 for ループを使う条件を外して作成してください。("For121.java")
    1. public class For121 {
    2. public static void main(String[] args) {
    3. // ここにコードを記述してください。
    4. int s = Integer.parseInt(args[0]);
    5. }
    6. }

    □ 実行結果

    $ java For121 18
    0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
    18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
    36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
    54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
    72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
    90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
    108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
    126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
      : (中略)
    972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989
    990 991 992 993 994 995 996 997 998 999
    
Top

inserted by FC2 system