学生向けプログラミング入門 | 無料

学生向けにプログラミングを無料で解説。Java、C++、Ruby、PHP、データベース、Ruby on Rails, Python, Django

Java | 08 | for

↓↓クリックして頂けると励みになります。



07 | while】 << 【ホーム】 >> 【09 | 複雑な条件分岐


繰り返しのプログラム for
繰り返しのプログラム for




Javaのfor文は、反復処理を行うための構文の一つです。
for文はある条件が成り立つ間、指定されたブロックの文を繰り返し実行します。
for文は、反復処理の回数や範囲が明確な場合に特に便利です。
例えば配列の要素にアクセスする場合や、ある条件を満たす間だけ処理を続ける必要がある場合に使用されます。




Visual Studio Codeで「ForTest.java」という名前のJavaファイルを作成します。


新規作成 【ForTest.java】

public class ForTest { 
	public static void main ( String argv[] ) { 

		for ( int i=0; i<10; i++ ) { 
		System.out.println ( "ようこそ!Javaの世界へ!" ); 
		} 
	} 
} 



このプログラムは、for文という構文を使っています。

for(型の指定; 条件; 繰り返し条件; ) {

     実行文
}



「型の指定」の部分で初期値の型の宣言や値の代入を行います。
「条件」に当てはまっていれば繰り返しを続けます。
「繰り返し条件」は一つの繰り返しが終わった後にどうするかを記述します。


ではJavaプログラムの内容を見ていきます。
変数 i は初期値で0を宣言しています。
「条件」(i < 10)を満たしているので、そのままループに入ります。
「ようこそ!Javaの世界へ!」というメッセージがプリントされたらループを抜けます。
ループを抜ける際に、「繰り返し条件」に書かれた部分(i++)が実行されます。
つまり、次にループに入ったときの変数 iの値は1になっているわけです。
このようにループが繰り返されるたびに変数 iの値はインクリメントされ、「条件」(i < 10)に当てはまらなくなったらループを抜けます。


メッセージは全部で10個表示されます。


これをWhile文で書き換えると次のようになります。

i=0;

 while(i<10) {
    system.out.plintln("ようこそ!Javaの世界へ!");
    i++;
 }



コンパイルして出力結果を確認します。

~/Desktop/Programming/JP $ javac ForTest.java 

~/Desktop/Programming/JP $ java ForTest      
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!
ようこそ!Javaの世界へ!



他にも色々な繰り返しのプログラムを作ってみます。
Visual Studio Codeで「ForTest2.java」という名前のJavaファイルを作成します。


新規作成 【ForTest2.java】

public class ForTest2 { 
	public static void main ( String[] args ) { 

		System.out.println ( "まだループの外です。" ); 

		for( int count=0; count < 10; count++ ) { 
			System.out.println ( "ループの中です。:" + count ); 
		} 
		System.out.println ( "ループの外に出ました。" ); 
	} 
}



変数countを「繰り返し条件」でインクリメントしています。
実行結果を確認して下さい。

~/Desktop/Programming/JP $ javac ForTest2.java

~/Desktop/Programming/JP $ java ForTest2
まだループの外です。
ループの中です。:0
ループの中です。:1
ループの中です。:2
ループの中です。:3
ループの中です。:4
ループの中です。:5
ループの中です。:6
ループの中です。:7
ループの中です。:8
ループの中です。:9
ループの外に出ました。



Visual Studio Codeで「ForTest3.java」という名前のJavaファイルを作成します。


新規作成 【ForTest3.java】

public class ForTest3 { 
	public static void main ( String[] args ) { 

		for ( ; ; ) { 
			double x = Math.random(); 
			System.out.println ( "x=" +x ); 
	
				if ( x > 0.5 ) { 
					break;
				} 
		}
		System.out.println ( "ブレイクしてループを抜けました。" ); 
	} 
}



このプログラムは無限ループの記述です。
条件を何も記述しない場合、無限ループになります。


ループの中に「break;」を記述しなければループを抜けることができません。
for文の括弧の中のセミコロン(;)2つは省略することができませんので必ず記述してください。


コンパイルして出力結果を確認します。

~/Desktop/Programming/JP $ javac ForTest3.java

~/Desktop/Programming/JP $ java ForTest3
x=0.7726850201288323
ブレイクしてループを抜けました。

~/Desktop/Programming/JP $ java ForTest3      
x=0.4682036365774417
x=0.9181894656551264
ブレイクしてループを抜けました。



Visual Studio Codeで、次の二重ループするプログラムを作成します。
ファイル名は「ForTest4.java」とします。


新規作成 【ForTest4.java】

public class ForTest4 { 
	public static void main ( String[] args ) { 

		for ( int x=1; x<=9; x++ ) { 
			for ( int y=1; y<=9; y++ ) {

				if( x*y < 10 )
					System.out.print( " " ); 
					System.out.print ( x*y + " " );
			} 
			System.out.println ( "" );
		} 
	} 
}



ではプログラムの内容をみていきましょう。


Javaプログラムではループの中でループを記述することができます。
「ForTest4.java」は、九九を表示するプログラムです。


まず変数xの値は1をとっています。
そのまま、もう一つのループに入ります。
変数yの値が1〜9まで繰り返された後にループを抜けて、今度は変xの値が2になります。
変数xの値が2のまま、変数yの値が1〜9まで繰り返され、ループを抜けて変数xの値が3になります。
この作業を最後まで繰り返すと九九の表ができあがります。


ここで、if文を使っている次の文を見てください。

if( x*y < 10 )
    System.out.print( " " ); 
    System.out.print ( x*y + " " );
 } 



これは10未満の値(一桁の値)のときの条件を記述しています。
表にしたときにずれると嫌なので、一桁の場合数字の前に半角スペースを一つ入れるような処理をしています。
そうすることによって、表の数字が縦横きれいに揃います。


Javaプログラムをコンパイルして出力結果を確認します。

~/Desktop/Programming/JP $ javac ForTest4.java

~/Desktop/Programming/JP $ java ForTest4
     
 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 



Visual Studio Codeで二重ループするプログラムを作ってみます。
ファイル名は「ForTest5.java」とします。


新規作成 【ForTest5.java】

public class ForTest5 { 
	public static void main ( String[] argv ) { 

		for ( int x=1; x<=20; x++ ) {

				if( x < 10 )
				System.out.print( " " );
				System.out.print( x + ":" );

			for( int y=1; y<=x; y++ ) { 

				if( x%y == 0 ) { 
				System.out.print( y + "," );
				}
			}
			System.out.println( "" );
		}
	}
}



このJavaプログラムは約数を求めるプログラムです。
約数とは割り切ることができる数字です。
例えば、8は1と2と4と8で割り切れますから、約数は1、2、4、8の4つとなるわけです。


このJavaプログラムも二重ループを使っています。
最初のループでは変数xが1から20になるまで繰り返されます。
内のループは変数yの値が1からy = 10になるまで繰り返されます。


ここで次の文を見てください。

if( x%y == 0 ) { 
    System.out.print( y + "," );
 }



これが実際に約数を求めている部分になります。
「もしx÷yの余りが0(ゼロ)の場合」という意味です。


このJavaプログラムをコンパイルして実行結果を確認します。

~/Desktop/Programming/JP $ javac ForTest5.java

~/Desktop/Programming/JP $ java ForTest5     
 1:1,
 2:1,2,
 3:1,3,
 4:1,2,4,
 5:1,5,
 6:1,2,3,6,
 7:1,7,
 8:1,2,4,8,
 9:1,3,9,
10:1,2,5,10,
11:1,11,
12:1,2,3,4,6,12,
13:1,13,
14:1,2,7,14,
15:1,3,5,15,
16:1,2,4,8,16,
17:1,17,
18:1,2,3,6,9,18,
19:1,19,
20:1,2,4,5,10,20,



Visual Studio Codeでもう一つの二重ループするプログラムを作ってみます。
ファイル名は「ForTest6.java」とします。


新規作成 【ForTest6.java】

public class ForTest6 { 
	public static void main ( String[] args ) {

		for ( int x=1; x<=9; x++ ) { 
			for ( int y=1; y<=x; y++ ) { 
				System.out.print ( "*" ); 
			} 
			System.out.println ( "" ); 
		} 
	} 
}



二重ループで「*」を表示させて三角形を表示させるプログラムです。
今までのJavaプログラムがわかればこの内容もわかると思います。
コンパイルして実行結果を確認します。

~/Desktop/Programming/JP $ javac ForTest6.java

~/Desktop/Programming/JP $ java ForTest6
     
*
**
***
****
*****
******
*******
********
*********



「ForTest6.java」の一行を書き換えて、出力結果を逆三角形にします。
ファイル名は「ForTest6_2.java」とします。


新規作成 【ForTest6_2.java】

public class ForTest6_2 { 
	public static void main ( String[] args ) {

		for ( int x=9; x>0; x-- ) { 
			for ( int y=1; y<=x; y++ ) { 
				System.out.print ( "*" ); 
			} 
			System.out.println ( "" ); 
		} 
	} 
}



このJavaプログラムをコンパイルして実行結果を確認します。

~/Desktop/Programming/JP $ javac ForTest6_2.java

~/Desktop/Programming/JP $ java ForTest6_2
     
*********
********
*******
******
*****
****
***
**
*




07 | while】 << 【ホーム】 >> 【09 | 複雑な条件分岐





↓↓クリックして頂けると励みになります。