前提
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- 年齢計算サーブレットの作成
- HTMLで入力された値をもとにJAVAで年齢計算を行い表示する
発生している問題・エラーメッセージ
名前は出るが 年齢計算の結果がnullになる
該当のソースコード
Java
package pkg1; import java.io.IOException; import java.io.PrintWriter; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import tool.Page; @WebServlet(urlPatterns={"/pkg1/Age_calculation"}) public class Age_calculation extends HttpServlet{ public void doPost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException { response.setContentType("text/html; charset=UTF-8"); PrintWriter out=response.getWriter(); try { request.setCharacterEncoding("UTF-8"); String name=request.getParameter("name"); Calendar calendarBirth = Calendar.getInstance(); Calendar calendarNow = Calendar.getInstance(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Date birthday = sdf.parse(request.getParameter("birthday")); Date now = new Date(); calendarBirth.setTime(birthday); calendarNow.setTime(now); int age = calendarNow.get(Calendar.YEAR) - calendarBirth.get(Calendar.YEAR); if (calendarNow.get(Calendar.MONTH) < calendarBirth.get(Calendar.MONTH)) { age -= 1; }else if (calendarNow.get(Calendar.MONTH) == calendarBirth.get(Calendar.MONTH)) { if (calendarNow.get(Calendar.DATE) < calendarBirth.get(Calendar.DATE)) { age -= 1; } } Page.header(out);out.println("名前"+name+"<br>"); Page.header(out);out.println("年齢" + calcAge(birthday, now) + "歳"); Page.footer(out); } catch (NumberFormatException e) { out.println("生年月日を入力してください"); } catch (ParseException e) { e.printStackTrace(); } } private String calcAge(Date birthday, Date now) { return null; } }
試したこと
https://qiita.com/pontyo4/items/14f159e802b312cb0b61
こちらのURLを参考に作成しました。
そして出たエラーはeclipceの修正機能で編集しました。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
まだ回答がついていません
会員登録して回答してみよう