- 締切済み
getParameterについて
今フォームの内容(文字列)をreq.getParameterValues(~)で持ってきているのですが、数字などを持って来たい場合は何を使えばいいんでしょうか? int suji = req.getParameterValues(int型); というようにすると、 javax.servlet.ServletRequest の getParameterValues(java.lang.String) は (int) に適用できません。 というエラーが出てしまうのです。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- elder2
- ベストアンサー率50% (3/6)
先程から、計算式に使ってるところで…とおっしゃっていますが、 計算式とはどの部分を指しているのでしょうか? ・getParameterValues()の引数にはStringを渡しましょう。 ・戻り値はString[]で受けましょう。 ・そのあとに以下のようにしてint[]へ変換すれば良いでしょう。 int[] iarray = new int[str.length]; for (int i = 0; i < iarray.length; i++) { iarray[i] = Integer.parseInt(str[i]); }
- ryo-_-3
- ベストアンサー率14% (2/14)
int型に変換されていないのなら 変換の時にエラーが出ると思います。 何のエラーが出ているか提示してもらわないと これ以上のアドバイスが出来ないので エラー内容を補足してください。
- ryo-_-3
- ベストアンサー率14% (2/14)
getParameterValuesの返り値はStringの配列になりますので String[] suji = request.getParameterValues("suji"); になります。 こちらはチェックボックス等のを取得する場合に使います。 単体で値を取得するなら、request.getParameter("suji")を使用します。 intに直す場合は、 String sujiStr = request.getParameter("suji"); int suji = Integer.parseInt(sujiStr); これでString型のsujiStrをint型のsujiに代入することが可能です。 絶対数字しかこないという確証がない限りは try~catchを使用してエラーを回避する必要があるかもしれません。 (数字しかこないと前提があっても行っておけばもし、数字以外が送られてもエラーで実行が停止する心配がありません。) 構文としては try { suji = Integer.parseInt(sujiStr); } catch (NumberFormatException e ) { // エラーの時に実行される // ここでのエラーとは、sujiStrの中身が10進数でない場合 suji = 0; }
- tatsu99
- ベストアンサー率52% (391/751)
数字が必ず入力されることが保証されているなら int suji = Integer.parseInt(req.getParameterValues(~)); として下さい。 もし、保証されないなら、そのとき、例外(NumberFormatException)がはっせいしますので、その対応を行って下さい。
補足
エラーは出ないようになったのですが、実際数字に変換されていないようで、計算式に使ってるところでエラーが出てしまいます。
- ryo-_-3
- ベストアンサー率14% (2/14)
getParameterValues(java.lang.String) と出てる通り、String型の名称を渡さないといけません。 HTMLのフォームの名称を与えるのでここはintには出来ません。 そして、int suji = ですが、getParameterValuesで返ってくる値はStringの配列になります。 その配列の中身をintに変更して使用してあげる必要があると思います。
補足
ということは、 String suji = getParameterValues(~); で受け取って、あとでint型に変更するってことですか? すみません、intに直す場合はどうすればいいのでしょうか?
補足
エラーは出ないようになったのですが、実際数字に変換されていないようで、計算式に使ってるところでエラーが出てしまいます。