- 締切済み
stringの値を、Calendarクラスの「.set」で使用するため
stringの値を、Calendarクラスの「.set」で使用するためには。 どうしらたいいのでしょうか? Calendarクラスの変数に、「.set」を使用して値を設定したいのですが 設定するための値をPOSTでもっていきていて、srting型にしかなりません。 Integer.valueOf(str).intValue(); Integer.parseInt(str); などを使用して設定できないか、試してみたのですがエラーになってしまいました。 APIのページなども見てみたのですが、初心者なのでいまいち分かりません… こういう場合どう設定すればいいのか、どうぞご教授よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 Exception in thread "main" java.lang.NumberFormatException: For input string: " 2010 " これは String startYear = request.getParameter("S_YEAR"); で取得した値に改行コードが含まれていると思います。 (なのでエラーメッセージも改行されている) 送信するほうで改行コードを送らないようにするか削除または startYear = startYear.replace("\n",""); // \nを削除 等で改行コードを削除することが必要です。 他の変数でも出る可能性がありますので全て適切な処理をすれば良いと思います。 (上記例は\nについてですのでそれでも同じエラーが出る場合は/r/nを削除等処理を変えてみて下さい)
- yamada_g
- ベストアンサー率68% (258/374)
>などを使用して設定できないか、試してみたのですがエラーになってしまいました。 とありますが、エラーになっている部分のコードはないですよね? 具体的にどういうコードを書いてどのようなエラーが発生して、どの部分がわからないのですか? それがこちらでは分からないので Stringからintに変換できているなら、Calendarクラスの適切なset()を呼び出せばいいと思います。 って回答になってしまいます・・
補足
ご指摘ありがとうございます。 ソースなのですが、以下の通りになります。 始めたばかりなので、いろいろおかしい点が多いかもしれません。すみません。 public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ HttpSession session = request.getSession(true); String userNo = (String) session.getAttribute("userid"); String startYear = request.getParameter("S_YEAR"); String startMonth = request.getParameter("S_MONTH"); String startDay = request.getParameter("S_DAY"); String endYear = request.getParameter("E_YEAR"); String endMonth = request.getParameter("E_MONTH"); String endDay = request.getParameter("E_DAY"); int a = Integer.parseInt(startYear); int aa = Integer.parseInt(startMonth); int aaa = Integer.parseInt(startDay); int b = Integer.parseInt(endYear); int bb = Integer.parseInt(endMonth); int bbb = Integer.parseInt(endDay); Calendar s_cal=Calendar.getInstance(); Calendar e_cal=Calendar.getInstance(); s_cal.set(a,aa,aaa); e_cal.set(b,bb,bbb); ・・・・以下略・・・・ ソースを実行すると、int a = Integer.parseInt(startYear);のところでエラーになります。 int a =Integer.valueOf(startYear).intValue(); でも確認してみたのですが、うまくキャストできませんでした… エラーは以下の通りになります。 致命的: サーブレット LunchSearchCheck のServlet.service()が例外を投げました java.lang.NumberFormatException: For input string: " 2010 " at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:447) at java.lang.Integer.parseInt(Integer.java:497) at view.LunchSearchCheck.doPost(LunchSearchCheck.java:54) at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapper
お礼
ご回答ありがとうございます。 >String startYear = request.getParameter("S_YEAR"); >で取得した値に改行コードが含まれていると思います。 >(なのでエラーメッセージも改行されている) デバッグで確認したところ、改行コードが含まれていたのを確認いたしました! 始めたばかりで値の確認も分からなかったのですが、上記のご指摘のおかげで勉強になりました。 >startYear = startYear.replace("\n",""); また、上記の方法で解決することができました。 ご教授ありがとうございます。