教育サーバーのページ
オンラインテキスト目次
システムプログラミング演習

JSPの基本構造 (4)

繰り返し処理を理解しよう (2)

次のプログラム Kuku.jsp は、ブラウザの リクエスト(HTTPのGETリクエスト)に対して、JSP内で動的に 生成したHTML文章を返す。

<%@ page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>九九表を作ってみよう</title>
</head>
<body>
<h1>九九表</h1>
<table border="1">
<tr>
	<th></th><th>1</th><th>2</th><th>3</th><th>4</th>
	<th>5</th><th>6</th><th>7</th><th>8</th><th>9</th>
</tr>
<%
for(int i=1;i<10;i++){
	out.println("<tr>");
	out.println("<th>" + i + "</th>");
	// 内側のループの開始
	for(int j=1;j<10;j++){
		out.println("<td align='right' width='20'>" + (i*j) + "</td>");
	}
	// 内側のループの終了
	out.println("</tr>");
}
%>
</table>
</body>
</html>

たとえば、Webサーバが動いているホストlocalhostのWebアプリケーシ ョンのルートディレクトリ下に格納されている、 JSPファイルKuku.jspを実行する。そうすると、 ブラウザが起動され、その上でその上で九九表が表示される。

プログラム Kuku.jsp の説明

表を表示させるためには、最低限、「表であることを示す タグ」、「表の中の1行を指定するタグ」、「表の各項目を 指定するタグ」の3つが必要である。表の各項目を<td> で定義し、いくつかの<td>〜</td>タグをまとめ て<tr>〜</tr>タグで囲み、さらに、 <tr>〜</tr>タグを<table>〜</table> タグで囲むのが、表を作る3つのタグの基本的な構造である。 九九表の表示は、

<table border="1">
<tr>
	<th></th><th>1</th><th>2</th><th>3</th><th>4</th>
	<th>5</th><th>6</th><th>7</th><th>8</th><th>9</th>
</tr>
<%
for(int i=1;i<10;i++){
	out.println("<tr>");
	out.println("<th>" + i + "</th>");
	// 内側のループの開始
	for(int j=1;j<10;j++){
		out.println("<td align='right' width='20'>" + (i*j) + "</td>");
	}
	// 内側のループの終了
	out.println("</tr>");
}
%>
</table>
によっておこなわれる。

表であることの宣言は

<table border="1">
〜
</table>
によっておこなわれる。border属性は、表の各項目に 枠線を表示するために指定する。

九九表の最初の列(1,2,3,4,5,6,7,8,9)は

<tr>
	<th></th><th>1</th><th>2</th><th>3</th><th>4</th>
	<th>5</th><th>6</th><th>7</th><th>8</th><th>9</th>
</tr>
によって、見出しとして指定される。

スクリプトレットは、

<%
for(int i=1;i<10;i++){
	out.println("<tr>");
	out.println("<th>" + i + "</th>");
	// 内側のループの開始
	for(int j=1;j<10;j++){
		out.println("<td align='right' width='20'>" + (i*j) + "</td>");
	}
	// 内側のループの終了
	out.println("</tr>");
}
%>

により表される。 九九の各演算結果が表の項目として、<td> 〜 </td>タグの 範囲に入り、さらに<tr> 〜 </tr>タグの範囲には1から9までの<td> タグを記述する。1から9までの<tr> 〜 </tr>タグを <table> 〜 </table>タグの範囲に記述すれば、九九表が完成する。

for(int i=1;i<10;i++){
	out.println("<tr>");
	out.println("<th>" + i + "</th>");
	// 内側のループの開始
	for(int j=1;j<10;j++){
		out.println("<td align='right' width='20'>" + (i*j) + "</td>");
	}
	// 内側のループの終了
	out.println("</tr>");
}
では、for文を用いた二重ループを用いて上記に示した九九表を出力している。

繰り返し処理を理解しよう (2)

次のプログラム sum.jsp は、ブラウザの リクエスト(HTTPのGETリクエスト)に対して、JSP内で動的に 生成したHTML文章を返す。

<%@ page contentType="text/html" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>1〜100の間の奇数を合計する</title>
</head>
<body>
<h1>1〜100の間の奇数を合計する</h1>
<%
int result=0;
for(int i=1;i<=100;i++){
	if(i % 2 == 0){continue;}
	result += i;
}
out.println("合計値:" + result);
%>
</body>
</html>

たとえば、Webサーバが動いているホストlocalhostのWebアプリケーシ ョンのルートディレクトリ下に格納されている、 JSPファイルsum.jspを実行する。そうすると、 ブラウザが起動され、その上で1〜100の間の奇数を合計した結果が表示される。

プログラム sum.java の説明

1〜100の間の奇数を合計する処理は、

<%
int result=0;
for(int i=1;i<=100;i++){
	if(i % 2 == 0){continue;}
	result += i;
}
out.println("合計値:" + result);
%>
のスクリプトレット内の繰り返し処理によっておこなわれる。

問題-1

NetBeansを使って、上のプログラム kuku.jsp を 実行してみよ。

問題-2

上のプログラム kuku.jspをwhile構文で書き換えた プログラムkuku1.jspを作成し、NetBeansを使って実行してみよ。

問題-3

NetBeansを使って、上のプログラム sum.jsp を 実行してみよ。

問題-4

上のプログラム sum.jspを参考にして、 偶数の合計を求めて表示するプログラムsum1.jspを作成し、 NetBeansを使って実行してみよ。

問題-5

以下の要件を満足するプログラム sum2.jspを作成し、 NetBeansを使って実行してみよ。 while文を使って100以上から1000未満までの偶数整数(100,102,..,998) の合計を計算して「even sum = ?」を表示する。

問題-6

以下の要件を満足するプログラム minmax.jspを作成し、 NetBeansを使って実行してみよ。 大きさ10の配列を用意してその要素にfor文を使って0以上1未満の乱数を 代入し、その最大値と最小値と対応する配列番号を「max = ? at index = ?」 と「min = ? at index = ?」で表示する。

システムプログラミング演習


nagai