山元進 for 文 while 文 do ~ while 文 文のネスト break 文 continue 文 for ( 初期化 ; 継続条件 ; 更新処理 ) { 繰り返し行う処理 } 何回も繰り返す処理を簡単に記述できる ※ 繰り返し行う処理が 1 文であるばあい、 { } で括る必要はない。しかし、形式を整えるため、 いつでも { } を入れておいた方が良い。 初期化 更新処理 繰り返し行う処理 ({ } の中の処理) for 継続条件 false for 文の次の文へ true 初めに継続条件が false だと、 一度も「繰り返し行う処理」を実行せずに終了 class Sample1 { public static void main(String[] args) { for( int i=1; i<=5; i++ ) { // for 文中で宣言した変数 i は、for 文の中 // でしか利用できない。このブロックは for 文の中 System.out.println("繰り返しています。"); } System.out.println("繰り返しが終わりました。 "); } } init i=1 i++ System.out.println ("繰り返しています。") for i<=5 ? true false System.out.println("繰り返しが終わりました。 ") class Sample2 { public static void main(String[] args) { for( int i=1; i<=5; i++ ) { // 最初に実行するとき i=1 // 更新部分に i++ → 繰り返す度に i がインクリメント System.out.println(i + "番目の繰り返しです。"); } System.out.println("繰り返しが終わりました。 "); } } for文中で変数を使うと、繰り返し回数などが示せる class Sample2_1 { public static void main(String[] args) { int i;// for 文の外で繰り返し回数の変数 i を定義することも可 for( i=0; i<5; i++ ) { // for 文の初期化は変数の宣言ではなくても良い System.out.println((i+1)+"番目の繰り返しです。"); } System.out.println(i+"回繰り返しました。 "); // for 文の外で繰り返し回数の変数 i を定義すると、 // for 文が終わった後も変数 i が利用できる // (cf: 変数のスコープ, 生存期間) } } import java.io.*; class Sample3 { public static void main(String[] args) throws IOException { System.out.println("いくつ*を出力しますか?"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); // キーボードからの入力 int num = Integer.parseInt(str); // 整数に変換 for( int i=1; i<=num; i++ ) { // 入力した回数だけ繰り返す System.out.print("*"); } } } import java.io.*; class Sample4 { public static void main(String[] args) throws IOException { System.out.println("いくつまでの合計を求めますか?"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); // キーボードからの入力 int num = Integer.parseInt(str); // 整数に変換 int sum = 0; // この sum の宣言は for 文の中に入れられない for( int i=1; i<=num; i++ ) { // 入力した回数だけ繰り返す sum += i; } System.out.println("1から"+num+"までの合計は"+sum+"です。"); } } while( 継続条件 ) { 継続条件がtrueの間、繰り返し行う処理 } while 文で継続条件が true である間、繰り返す 処理が記述できる。 条件の記述に気をつける。 ※ 繰り返し行う処理が 1 文であるばあい、 { } で 括る必要はない。しかし、形式を整えるため、い つでも { } を入れておいた方が良い。 繰り返し行う処理 ({ } の中の処理) while 継続条件 false while 文の次の文へ true class Sample5 { public static void main(String[] args) { int i=1; while( i<=5 ) { System.out.println(i+"番目の繰り返しです。"); i++; } System.out.println("繰り返しが終わりました。 "); } } System.out.println (i+"番目の繰り返しです。"); i++; while i<=5 ? true false System.out.println("繰り返しが終わりました。 ") while(継続条件){ } は for ( ; 継続条件 ; ){ } と同じ class Sample5_2 { public static void main(String[] args) { int i=1; for( ; i<=5; ) { System.out.println(i+"番目の繰り返しです。"); i++; } System.out.println("繰り返しが終わりました。 "); } } 更新処理を忘れをしやすい →永久に終わらない class Sample5_3 { public static void main(String[] args) { int i=1; while( i<=5 ) { System.out.println(i+"番目の繰り返しです。"); //i++; } System.out.println("繰り返しが終わりました。 "); } } do { 継続条件がtrueの間、繰り返し行う処理 } while( 継続条件 ) ; while () { } とは継続条件評価の順序が違う →最低1回は { } 内の処理が行われる ※ 繰り返し行う処理が 1 文であるばあい、 { } で括る必要はない。しかし、形式を整えるため、 いつでも { } を入れておいた方が良い。 do 繰り返し行う処理 ({ } の中の処理) while 継続条件 false do~while 文の次の文へ true class Sample6 { public static void main(String[] args) { int i=1; do { System.out.println(i+"番目の繰り返しです。"); i++; } while( i<=5 ); System.out.println("繰り返しが終わりました。 "); } } 入れ子 = マトリョーシカ マトリョーシカの中には小さなマトリョーシカ 典型的には for 文の中に for 文 : ネスト if 文中に if 文などもネストという 何段ネストしているか把握しやすく → インデント (字下げ) for 文中に if 文などもネストと同様にインデント for 文ネスト : 多重の繰り返し処理記述可能 http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:JapaneseNestingDolls.jpg (2010 Oct. 18) から引用 http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%88%E3%83%AA%E3%83%A7%E3%83%BC%E3%82%B7% E3%82%AB%E4%BA%BA%E5%BD%A2 (2010 Oct. 18) から引用 class Sample7 { public static void main(String[] args) { for(int i=0; i<5; i++){ for(int j=0; j<3; j++){ System.out.println("iは"+i+":jは"+j); } } } } class Sample8 { public static void main(String[] args) { boolean bl=false; for(int i=0; i<5; i++){ for(int j=0; j<5; j++){ if(bl){ System.out.print("-"); bl=false; }else{ System.out.print("*"); bl=true; } } System.out.print("\n"); } } } import java.io.*; class Sample9 { public static void main(String[] args) throws IOException { System.out.println("何回目でループを中止しますか(1~10)?"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); // キーボードからの入力 int res = Integer.parseInt(str); // 整数に変換 for( int i=1; i<=10; i++ ) { // 本来10回繰り返す System.out.println(i+"回目の処理です。"); if( i==res ) break; // switch 文の break; と同じ意味 } } } import java.io.*; class Sample11 { public static void main(String[] args) throws IOException { System.out.println("何回目の処理を飛ばしますか (1~10)?"); BufferedReader br = new BufferedReader( new InputStreamReader(System.in)); String str = br.readLine(); // キーボードからの入力 int res = Integer.parseInt(str); // 整数に変換 for( int i=1; i<=10; i++ ) { // 本来10回繰り返す if( i==res ) continue; // 入力した回の処理を飛ばす System.out.println(i+"回目の処理です。"); } } } break; 即座に for 文を抜ける continue; 繰り返し処理の残りの部分をスキップする for (int i=0; i < 10 ; i++) { 処理1 … if ( i==8 ) break; if ( i==5 ) continue; 処理2 … } 5 <= i <= 8 の場合 処理1は実行され、処理2は実行されない i=8 で for 文を抜けるので、残りの(i==9の) 処理1も処理2も実行されない for文を使うと,繰り返し処理ができる. while文を使うと,繰り返し処理ができる. do~while文を使うと,繰り返し処理ができる. 文はネストすることができる. break文を使うと,繰り返し文またはswitch文 のブロックを抜け出す. continue文を使うと,繰り返し文の最初に 戻って次の繰り返し処理にうつる. 以下のプログラムを 、( )内に指定した文を利用して 作成せよ 適当な正の整数 N を入力し、Nを十進表示したときに、 何ケタの数になるかを求めるプログラム (while) 適当な正の整数 N を入力し、Nを十進表示したときの、 各桁の数の和を求めるプログラム (do ~ while ) 適当な正の整数 N を入力し、Nが素数かどうかを表示 するプログラム (for および break) 次のページに続く タブ(¥t)を使って、次のように九九の表を画 面に出力するプログラムを作成せよ。ただし、 ネストした for 文を使うこと。 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
© Copyright 2024 ExpyDoc