Javaでフォームの入力値を数値に変換するには?文字列と数値の違いを理解する|確認問題の回答例

Schoo Java入門 中級 第4回 Webアプリケーションの動作原理と画面連携

このページは、Javaでフォームの入力値を数値に変換するには?文字列と数値の違いを理解するの確認問題の回答例です。

問題1:取得した値の型と内容

型は String、値は文字列の "2" です。フォームに数字を入力しても、getParameter() が整数の2を返すわけではありません。

問題2:取得・変換・計算の3行

String countText = request.getParameter("count");
int count = Integer.parseInt(countText);
int total = 800 * count;

2枚なら total は1600です。countText は文字列の "2" のままで、count に整数の2が入ります。

問題3:3種類の不正な入力

  • "":未入力。空文字列なので、変換する前に入力を求めます。
  • "two":変換できない。Integer.parseInt()NumberFormatException が通知されます。
  • "6":範囲外。整数の6には変換できますが、1〜5枚という要件を満たしません。

問題4:チェックを含めた回答例

String countText = request.getParameter("count");
String message;

if (countText == null || countText.trim().isEmpty()) {
    message = "枚数を入力してください。";
} else {
    try {
        int count = Integer.parseInt(countText.trim());

        if (count < 1 || count > 5) {
            message = "枚数は1〜5枚で入力してください。";
        } else {
            int total = 800 * count;
            message = "合計金額は" + total + "円です。";
        }
    } catch (NumberFormatException e) {
        message = "枚数は1〜5の整数で入力してください。";
    }
}

JSPのJava処理部分に書く例です。計算結果や入力エラーは message に入ります。表示部分を <p><%= message %></p> とすると、その内容が画面に表示されます。

入力された文字列そのものは表示せず、決められたメッセージと計算した数値だけを表示しています。

取得した値確認する結果
"1"合計金額は800円です。
"5"合計金額は4000円です。
"0" / "6"枚数は1〜5枚で入力してください。
"" / null枚数を入力してください。
"two" / "2.5"枚数は1〜5の整数で入力してください。

元の記事に戻る

Javaでフォームの入力値を数値に変換するには?文字列と数値の違いを理解する