基礎から学ぶサーブレット/JSP(7)
クラスライブラリを攻略「基本クラス編」
| 乱数表を作成する −Mathクラス− |
Mathクラスは、指数関数や対数関数、三角関数、平方根、乱数生成などといった数学演算を実行するための一連のメソッドを提供します。Mathクラスに属するメソッドはすべて静的メソッドであり、使用に際してインスタンス化(オブジェクト生成)を必要としません。
ここでは、このMathクラスのrandomメソッドを利用して、簡易な10×10の乱数表を生成してみることにしましょう。
| リスト5 random.jsp |
<%@ page contentType="text/html;charset=Shift_JIS" %> |
![]() |
| 画面4 10×10のテーブルに0〜100の範囲の乱数表が生成されます。実行ごとにセットされる値は変化します |
■ロジックの概要
ここでは2重のforループを利用して、10×10の表を生成しています。Math#randomメソッドは0.0〜1.0の範囲の乱数を生成しますが、ここでは生成された乱数に100を掛け、roundメソッドで小数点以下を切り捨てることで、0〜100の整数値を取得しています。
もしも0〜1000の範囲の乱数表を生成したいという場合には、1000を掛けてやります。
■Mathクラスの主なメソッド
Mathクラスに用意されているメソッドは、もちろん、round、randomメソッドだけではありません。以下では、Mathクラスでよく使用する主なメソッドについて、一覧に挙げておくことにしましょう。
|
| Mathクラスはさまざまな数値演算の手段を提供します。Mathクラスに属するメソッドはすべて静的メソッドですので、オブジェクトを生成することなく直接にメソッドを呼び出すことが可能です。 |
| システム環境変数を取得する −Systemクラス− |
パスの区切り文字を想定してみましょう。Windows環境では「\」、UNIX環境では「/」です。
このような環境依存の情報を、ハードコーディングすることは可搬性という観点から好ましくありません。プログラム中に「\」という文字を埋め込んでしまった時点で、そのコードはWindows専用のコードとなってしまうのです。UNIX環境で同じコードを動かそうとした場合にも、いちいち「/」に置き換え(場合によっては再コンパイル)が必要です。
このような環境依存情報を、JSP(Java)ではシステムプロパティを介して取得することができます。システムプロパティから環境依存情報を動的に取得することで、より再利用性の高いコードを記述することができます。
ここでは、JSPで扱うことのできる主なシステムプロパティを動的に一覧表示してみることにしましょう。
| リスト6 property.jsp |
<%@ page contentType="text/html;charset=Shift_JIS" %> |
![]() |
| 画面5 システムプロパティの一覧を表示 |
■ロジックの概要
あらかじめ取得した主なシステムプロパティの名前を、文字列配列aryNamにセットしておきます。あとはforループで順番に配列の中身を取り出していくだけです。システムプロパティへのアクセスは、System#getPropertyメソッドから行うことができます。
■主なシステムプロパティ
以下に、System#getPropertyメソッドで取得することができる主なシステムプロパティとその概要を挙げておくことにします。
表6 主なシステムプロパティ| プロパティ名 | 概要 |
| application.home | アプリケーションのホームディレクトリ |
| file.separator | ファイルパスの区切り文字(Windows版では「\」、UNIX版では「/」) |
| java.ext.dirs | 拡張ディレクトリへのパス |
| java.home | Javaのホームディレクトリ |
| java.io.tmpdir | 一時ディレクトリ |
| java.library.path | クラスライブラリのパス |
| java.runtime.version | ランタイムのバージョン |
| java.specification.name | Java仕様の名前 |
| java.version | Javaのバージョン |
| java.vm.name | Java仮想マシン名 |
| line.separator | 改行文字(Windowsでは「\r\n」、UNIX版では「\n」) |
| os.name | OSの名前 |
| os.version | OSのバージョン |
| path.separator | パス連結の区切り文字(Windowsでは「;」、UNIXでは「:」) |
| user.country | ユーザーの国コード |
| user.dir | ユーザーディレクトリ |
| user.home | ユーザーのホームディレクトリ |
| getPropertyメソッドはシステムプロパティを取得します。システムプロパティを介することで環境依存要素をハードコーディングする必要がなくなり、より可搬性に富んだコードを記述することができます。 |
今回はここまでです。次回は、バイリンガルサイトを構築するためのResourceBundleクラス、正規表現検索を可能とするPattern/Matcherクラスなどについてご紹介することにしましょう。
| 3/3 |
|
INDEX |
||
| 第7回 クラスライブラリを攻略「基本クラス編」 | ||
| Page1 入力文字列をHTMLエンコードする −String/StringBufferクラス(1)− リクエストパラメータの文字コードを変換する −String/StringBufferクラス(2)− |
||
| Page2 簡易なアクセスカウンタを作成する −ラッパクラス− 使用可能なパッケージの一覧を取得する −Packageクラス− |
||
| Page3 乱数表を作成する −Mathクラス− システム環境変数を取得する −Systemクラス− |
||
| 「基礎から学ぶサーブレット/JSP」連載記事一覧 |
TechTargetジャパン
- Scalaのパッケージ、アクセス修飾子、オブジェクト継承 (2012/5/22)
インポート、パッケージオブジェクト、抽象クラス/抽象メソッド、オーバーライド、final、シールドクラスなども - 基幹系システムでCloud SQLは使えるか試してみた (2012/5/17)
サンプルとしてMRPシステムを作成して動かし、「再帰呼び出し」などのパフォーマンスを測定して検証してみます - アジャイル管理ツール9選+Pivotal Tracker入門 (2012/5/14)
群雄割拠のアジャイルプロジェクト管理ツールを9つ紹介し、特に注目を集めているPivotal Trackerの基本的な使い方を解説します - サーバサイドJSやJavaでWebアプリが作れるXPages (2012/5/11)
Notes/Dominoの資産をサーバサイドJavaScriptやJavaで操作し、HTMLやJavaScript、CSSをUIにできる技術を紹介
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


