dポイントプレゼントキャンペーン実施中!

今フォームの内容(文字列)をreq.getParameterValues(~)で持ってきているのですが、数字などを持って来たい場合は何を使えばいいんでしょうか?

int suji = req.getParameterValues(int型);

というようにすると、

javax.servlet.ServletRequest の getParameterValues(java.lang.String) は (int) に適用できません。

というエラーが出てしまうのです。

A 回答 (5件)

先程から、計算式に使ってるところで…とおっしゃっていますが、


計算式とはどの部分を指しているのでしょうか?

・getParameterValues()の引数にはStringを渡しましょう。
・戻り値はString[]で受けましょう。
・そのあとに以下のようにしてint[]へ変換すれば良いでしょう。

int[] iarray = new int[str.length];
for (int i = 0; i < iarray.length; i++) {
iarray[i] = Integer.parseInt(str[i]);
}
    • good
    • 0

int型に変換されていないのなら


変換の時にエラーが出ると思います。

何のエラーが出ているか提示してもらわないと
これ以上のアドバイスが出来ないので
エラー内容を補足してください。
    • good
    • 0

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;
}

この回答への補足

エラーは出ないようになったのですが、実際数字に変換されていないようで、計算式に使ってるところでエラーが出てしまいます。

補足日時:2005/05/31 17:41
    • good
    • 0

数字が必ず入力されることが保証されているなら



int suji = Integer.parseInt(req.getParameterValues(~));
として下さい。
もし、保証されないなら、そのとき、例外(NumberFormatException)がはっせいしますので、その対応を行って下さい。

この回答への補足

エラーは出ないようになったのですが、実際数字に変換されていないようで、計算式に使ってるところでエラーが出てしまいます。

補足日時:2005/05/31 17:38
    • good
    • 0

getParameterValues(java.lang.String)


と出てる通り、String型の名称を渡さないといけません。

HTMLのフォームの名称を与えるのでここはintには出来ません。

そして、int suji =
ですが、getParameterValuesで返ってくる値はStringの配列になります。

その配列の中身をintに変更して使用してあげる必要があると思います。

この回答への補足

ということは、
String suji = getParameterValues(~);
で受け取って、あとでint型に変更するってことですか?
すみません、intに直す場合はどうすればいいのでしょうか?

補足日時:2005/05/31 17:08
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!