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

このページは、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の整数で入力してください。 |