条件による繰り返し-while文-

for文では、

 1+2+\cdots+200

のように、繰り返しの際に値が一定間隔で増えたり減ったりする際に便利な命令でした。

ここで紹介するwhile文は、単に繰り返すだけという命令です。

while文の仕組み

while文の文法は以下のようになっています。

while(条件){
  命令
}

条件がtrueの場合、括弧内の命令を実行します。そして、命令が終わったら、再び条件をチェックして条件がtrueなら再び命令を実行します。

ですから、もしも

while(true){
}

とすれば無限ループになってプログラムを終了することができません。こうなったら強制終了しかないので、プログラマは無限ループにならないように注意しましょう。

1から100まで足してみる

では、1から100まで足すプログラムをwhile文を使って計算します。

class Test
{
	public static void main(String[] args)
	{
		int number=100;
		int sum=0;
		int i=1;
		while(number>=i){
			sum=sum+i;
			i++;
		}
		System.out.println("sum="+sum);
	}
}

実行すると

sum=5050

となります。このプログラムでは、はじめはi=1で、100>=1なのでwhile文内の命令が実行されます。

すると、sumに1が足され、iが1インクリメントされて2になります。

i=2においても、100>=2なので、またwhile文の命令が実行されます。

そして、i=101になったときにwhile文が終了します。

while文を抜ける命令break

途中からwhile文を抜けたい場合があります。その場合はbreak文を使います。

例えば、

int i=0
while(true){
   i=i+1;
   if(i>100){
      break;
   }
}

とすれば、i=101になると、if文にはいりbreak文が実行されます。するとwhile文から抜け出すことができます。

よって、

i=0,1,2,3,…,100,101

でwhile文が実行されます。

while文の先頭に戻る

while文の途中でwhile文の先頭に戻りたい場合はcontinue文を使います。例えば

class Test
{
	public static void main(String[] args)
	{
		int number=100;
		int sum=0;
		int i=1;
		while(number>=i){
			sum=sum+i;
			i++;
			if(i<100){
				continue;
			}
			System.out.println("実行");
		}
		System.out.println("sum="+sum);
	}
}

とすれば

実行

実行

sum=5050

が表示されます。この場合、i<100の場合はcontinueでwhile文の先頭へ戻ります。

よって、i=100,101の時に実行が表示され、ループを抜けてsum=5050が表示されます。

とりあえず実行してから考えるdo-while文

はじめにwhile文を実行するかを判定するのではなく、while文を実行してから判定するという方法があります。

それが、do-while文です。

do{
   命令
}while(条件);

do内の命令を実行してから、条件で再び命令を行うか判断します。例えば

class Test
{
	public static void main(String[] args)
	{
		int number=100;
		int sum=0;
		int i=1;
		do{
			sum=sum+i;
			i++;
		}while(number>=i);
		System.out.println("sum="+sum);
	}
}

とすれば

sum=5050

と表示されます。i=1,2,3,..,100が実行されるので5050となります。

 

著者:安井 真人(やすい まさと)