ホルン吹きでSEなブログ

趣味でホルン吹き、仕事でSEやってます

javaのメソッド(半角数字、範囲チェック)

f:id:t910827:20170728195641p:plain:w300

こんにちは。
タイトルについて。


皆さんはバリデーション(妥当性)チェックはどのように行ってますか?
文字数チェックだったり変換チェックだったり。


ぼくはここ2年近く、バッチ系のお仕事をしているため
javaのプログラム内でチェックしています。


今日は、「たまに使うけどググって確認しないと....」っていうメソッドをメモ代わりにご紹介します。


今回ご紹介するのはこちら!


・値が半角数字かをチェックし、さらに最小値〜最大値に収まるかをチェック




コードはこちらになります。

	/**
	 * パラメータが半角数字かつ最小値以上、最大値以下であればその値を返却する。
	 *
	 * @param param
	 *            チェック対象
	 * @param min
	 *            最小値
	 * @param max
	 *            最大値
	 * @return num 返却値
	 */
	public static int checkNumRange(String param, int min, int max) {

		// 返却用の変数を宣言
		int num;

		try {

			// 半角数字かをチェック
			num = Integer.parseInt(param);

		} catch (NumberFormatException e) {

			// 半角数字以外があればエラー
			throw new NumberFormatException(" パラメータが半角数字ではありません。設定されている値は" + param + "です。");

		}

		// 最小値以上、最小値以下の判定
		if (min <= num && num <= max) {

			// 判定OKならその値を返却する
			return num;

		}

		// 判定NGならエラー
		throw new IllegalArgumentException("パラメータが最小値以上、最大値以下ではありません。設定されている値は" + param + "です。");

	}


ツラツラと書きましたが実用性があるのは半角数字チェックの方だなと思っています。。。
戻り値をInteger型にしたい場合は

// 半角数字かをチェック
num = Integer.parseInt(param); 

ここを

// 半角数字かをチェック
Integer intNum = Integer.valueOf(param);

のように変更してください。

parseIntは戻り値がint型
valueOfは戻り値がInteger型なのです。