5-4.クラス-例外処理
はじめに
本大問で作成するプログラム(演習課題も含む)を保存するためのパッケージを作成する。
- パッケージ名
web._05._04
5-4-1
try -catch
入力されたパスのファイルを開く。
開いた時にFileNotFoundExceptionが発生した場合はエラーメッセージを表示する。
ここでは、try{ }catch{ }を利用すること。
ファイルが見つかった場合は、その旨を画面に表示する。
※IOExceptionはthrowすること
なお、クラス名・実装先メソッドは以下の通り。
- クラス名
S541FileReaderDisplay - 実装先メソッド
mainメソッド
【画面レイアウト】
ファイルのパスを入力してください。 ・・・ユーザー入力
C:\sample\chap2\search
ファイルが見つかりました。 ・・・ここから結果表示(正常な場合)
ファイルが見つかりませんでした。 ・・・ここから結果表示(異常な場合)
【テストパターン】
考え方
・ファイルのパスを正しく入力して、結果が正しく表示されたかどうかを確認する。
・存在しないファイルのパスを入力して、結果が正しく表示されたかどうかを確認する。
【サンプルソースコード】
5-4-2
入力値チェックの実装
入力された「郵便番号」、「携帯番号」、「生年月日」の未入力チェックと形式チェックを行う。
チェックの結果、未入力 or 形式が異なる場合は該当するエラーメッセージを全て画面に表示する。
問題ない場合は、入力値を表示する。
画面は<画面レイアウト>を参照すること。
なお、入力受付&正常結果出力クラス名は「S542InputInformation、メソッド名は「checkInput」で実装する。
また、入力値チェック&異常結果クラス名は「S542ValueChecker」、メソッド名は「isValidate」で実装する。
詳細は以降の【作成するクラス】を参照する。
作成が完了(コンパイルエラーがでていない状態)したら、課題実行ポータルクラス(SystemStarter.java)(右クリック⇒名前を付けてリンク先を保存)を(デフォルトパッケージ)に配置し、以下操作を行う。
1. SystemStarter.java の以下2行のコメント(//)を削除し、上書き保存する。
S542InputInformation inputInformation = new S542InputInformation();
inputInformation.checkInput();
2. もし、S542InputInformation に赤い波線が表示される場合は、一番上の行に「import web._05._04.S542InputInformation;」を追加してください。
3. SystemStarter.java を起動し、使う機能として 6 を入力 ⇒ エンター。「6.入力値チェック!」機能の動作確認を行う。
【入力値チェック】
入力項目 | チェック内容 |
---|---|
郵便番号 | ①空文字チェック ②形式チェック(半角数字3桁-半角数字4桁) |
携帯番号 | ①空文字チェック ②形式チェック(半角数字3桁-半角数字4桁-半角数字4桁) |
生年月日 | ①空文字チェック ②形式チェック([S(昭和) or H(平成)]半角数字2桁[年][01月~12月][01日~31日]) ex)S57年12月21日 ※月は01 - 12、日は01 - 31までとする。 |
【エラーメッセージ】
入力項目 | メッセージ内容 |
---|---|
郵便番号 | ①郵便番号は必須項目です。 ②郵便番号は半角数字3桁-半角数字4桁で入力してください。 |
携帯番号 | ①携帯番号は必須項目です。 ②携帯番号は半角数字3桁-半角数字4桁-半角数字4桁で入力してください。 |
生年月日 | ①生年月日は必須項目です。 ②生年月日は[S(昭和) or H(平成)]半角数字2桁[年][01月~12月][01日~31日]で入力してください。 |
【画面レイアウト1(入力値が正常な場合)】
郵便番号を入力してください。
276-0011 ・・・ユーザー入力
携帯番号を入力してください。
090-9999-9999
生年月日を入力してください。
S55年01月09日 ・・・ユーザー入力終了
郵便番号は「276-0011」
携帯番号は「090-999-9999」
生年月日は「S55年01月09日」
【画面レイアウト2(入力値が異常な場合)】
郵便番号を入力してください。
・・・ユーザー入力
携帯番号を入力してください。
090-9999-9999
生年月日を入力してください。
S55年13月22日 ・・・ユーザー入力終了
郵便番号は必須項目です。
生年月日は生年月日は[S(昭和) or H(平成)]半角数字2桁[年][01~12月][01-31日]で入力してください。
【作成するクラス】
- 入力受付&正常結果出力クラス
- 入力値チェック&異常結果出力クラス
<イメージ>
<入力受付&正常結果出力クラス>
- クラス名
S542InputInformation - メソッド
※インスタンスメソッドとしてつくる(staticはつけない)- checkInput
戻り値:なし
引数:なし
- checkInput
<入力値チェック&異常結果出力クラス>
- クラス名
S542ValueChecker - メソッド
※インスタンスメソッドとしてつくる(staticはつけない)- isValidate
戻り値:真偽型
引数:郵便番号、携帯番号、生年月日
- isValidate
【テストパターン】
考え方
・各入力項目を正しく入力する。
・異常な値を入力する。
5-4-3
会員登録
入力値をもとに会員登録を行う。
入力できる項目は、「名前」「HN」「性別」「ID」「パスワード」「一言」とする。
入力値は先にチェックを行い、入力値に問題がある場合はエラーメッセージを表示する。
問題がない場合は、入力値を会員クラスのインスタンス(会員インスタンスと呼称する)に格納し、会員インスタンスの自身の情報を表示するメソッドを呼び出してコンソールに表示する。
会員クラスの詳細は、以降の【会員クラス】を確認すること。
※半角スペースのみ・全角スペースのみも未入力として扱うこと※
【入力値チェック】
入力項目 | チェック内容 |
---|---|
名前 | ①空文字チェック |
HN | ①空文字チェック ②形式チェック(半角英数字のみ・10文字以内) |
性別 | ①空文字チェック ②値チェック(男性 or 女性) |
ID | ①空文字チェック ②形式チェック(半角英数字と_、\、@のみ使用可能) |
パスワード | ①空文字チェック ②形式チェック(半角英数字のみ、半角英字と半角数字が必ず1字ずつ以上入っていること) |
一言 | ①文字数チェック(20文字以内) |
【エラーメッセージ】
入力項目 | メッセージ内容 |
---|---|
名前 | ①名前は必須項目です。 |
HN | ①HNは必須項目です。 ②HNは半角英数字10文字以内で入力してください。 |
性別 | ①性別は必須項目です。 ②性別は男性もしくは女性で入力してください。 |
ID | ①IDは必須項目です。 ②IDは半角英数字もしくは、_\@で入力してください。 |
パスワード | ①パスワードは必須項目です。 ②パスワードは半角英数字のみで、必ず半角英字と半角数字を1字以上ずつ混ぜてください。(○1a ×11) |
一言 | ①一言は20文字以内で入力してください。 |
【会員クラス】
- 各入力項目のフィールドとsetter, getterをもつ。
他クラスから値の代入・取得を行う場合は基本的にsetter, getterを使うこと。
自クラスが値の代入・取得を行う場合は、thisを使ってフィールドを直接利用すること。 - 自インスタンスに格納されている各項目の値(自身の情報)を表示するためのメソッドを作成し、画面表示時にはそのメソッドを呼び出す。
【画面レイアウト1(入力値が正常な場合)】
名前を入力してください。
太郎 ・・・ユーザー入力
HNを入力してください。
tarosu
性別を入力してください。
男性
IDを入力してください。
taro@roat
パスワードを入力してください。
t129ro
一言を入力してください。
ぱんなこった ・・・ユーザー入力終了
名前は「太郎」
HNは「tarosu」
性別は「男性」
IDは「taro@roat」
パスワードは「t129ro」
一言は「ぱんなこった」、です。
【画面レイアウト2(入力値が異常な場合)】
名前を入力してください。
・・・ユーザー入力
HNを入力してください。
tarosu
性別を入力してください。
男性
IDを入力してください。
あいでぃー
パスワードを入力してください。
t129ro
一言を入力してください。
ぱんなこった ・・・ユーザー入力終了
名前は必須項目です。
IDは半角英数字もしくは、_\@のみで入力してください。
【テストパターン】
考え方
・各入力項目を正しく入力する。
・異常な値を入力する。
Copyright © Xincor miXell Co., Ltd. All rights reserved