条件で繰り返しを中断する - break文

break文

  • for文やwhile文で、指定した回数だけ処理を繰り返す途中で「中断」する


処理の中断

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>繰り返し処理と中断</title>
<script>
var i = 1;
function ans(){
  switch ( i ) {
    case 1:
      alert('【ヒント】北海道は県ではありません');
      break;
    case 2:
      alert('【ヒント】東北地方にある県です');
      break;
    default:
      alert('答えは岩手県です');
  }
i++;
}
</script>
</head>
<body>
<h3>(問題)</h3>
<p>日本で最も面積が大きい“県”は何県でしょう?</p>
<p><button onclick="ans()">答えを見る</button></p>
<p>
※ボタンのクリックが2回までの間はヒントが表示されます。<br>
※ボタンを3回以上クリックすると、答えが表示されます。
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>繰り返し処理</title>
</head>
<body>
<h3>合計</h3>
<p>以下のボタンをクリックすると、<br>
入力した数字までの合計は「100」を超えた段階を表示します。</p>
<p><button onclick="total()">数字を入力する</button></p>
<script>
function total(){
  var ans = 0;
  var maxNum;
  var bkNum = 100;
	
maxNum = prompt('数字を入力してください。', '半角数字');
  for (i=1 ; i<=maxNum ; i++){
    ans = ans + i;
    if(ans >= bkNum) {
      break;
    }
  }
  alert('1~' + i + 'の合計は' + ans+ 'です');
}
</script>
</body>
</html>
無限ループとbreak文
  • while文の条件式に「true」とだけ記述すると、常に条件式が成立することになります
  • したがって処理を延々繰り返す、「無限ループ」となります
  • 「無限ループ」のままではプログラムが終了しないため、ブロック内に適切な「if文」と「break文」を置く必要があります


条件式はどんなとき成立するか

  • JavaScriptでは、「0」、「undefined」、「false」、「空文字列(長さが0の文字列)」の値以外であれば、条件が成り立つと判断されます
  • while (1)でも、無限ループになります


ループの中断

<!DOCTYPE html>
<html lang='ja'>
<head>
<meta charset='UTF-8'>
<title>ループの中断</title>
</head>
<body>
<script>
var ans = 5;
var num;
var msg = '1〜10までの数字を入力してください';

while (true) {
	num = prompt(msg, '半角数字を入力');
	if (ans  == num) {
		document.write('<h1>正解です</h1>');	
		break;	
	}
	if (num < ans ) {
		msg = 'もっと大きい数を入力してください';
	} else if (num > ans ) {
		msg = 'もっと小さい数を入力してください';
	} else {
		msg = '数を入力してください';
	}
}
</script>
</body>
</html>

continue文

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>continue文</title>
</head>
<body>
<script>
var a, b;
b = 1;

for (a = 0; a < 4; a++) {
  if (a + b == 2)
  continue;
		
document.write(a, "+", b, "=", a + b, "<br>");
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>continueの利用</title>
</head>
<body>
<h3>2または3で割り切れない数値</h3>
<p>1〜100までの場合</p>
<script>
  for (i=1 ; i<=100 ; i++){
    if(i % 2 == 0 || i % 3 == 0) {
      continue;
    }
  document.write(i, ' ');
		}
</script>
</body>
</html>

まとめ

  • while文の条件式に「true」を設定すると、無限ループになる
  • 無限ループから脱出するには、if文とbreak文を使う