MENU

【Java】生年月日から年齢を計算するプログラム その2

f:id:kiserukun:20210611090227p:plain

前回はLocalDateクラスを使用し計算しましたが
今回はCalendarクラスを使用して生年月日から年齢を計算するプログラムを作成したいと思います。
処理内容は大きくは変わりません。

生年月日から年齢を計算する

前回と同じ流れです
入力jspサーブレットクラス → 出力jsp

CalcServlet.java

サーブレットクラスです

package servlet;

import java.io.IOException;
import java.util.Calender;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/CalcServlet")
public class CalcServlet extends HttpServlet {
 private static final long serialVersionUID = 1L;

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  exec(request, response); 
 }

 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  exec(request, response); 
 }

 private void exec(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
  String year = request.getParameter("year");
  String month = request.getParameter("month");
  String day = request.getParameter("day");
  
  
  Hold hold = new Hold();
  String age = getAge(year, month, day);
  hold.setAge(age);
  request.setAttribute("hold", hold);
  RequestDispatcher dispatcher = request.getRequestDispatcher("/WEB-INF/jsp/Result.jsp");
  dispatcher.forward(request, response);
 }
 
 private String getAge(String year, String month, String day) {
//ここから違います
      String inputForm = user.getYear() + "/" + user.getMonth() + "/" + user.getDay();
      Calendar calendar = Calendar.getInstance();

      calendar.set(Integer.parseInt(user.getYear()), (Integer.parseInt(user.getMonth()) - 1), Integer.parseInt(user.getDay()));

      String calendarForm = calendar.get(Calendar.YEAR) + "/" + (calendar.get(Calendar.MONTH) + 1) + "/" + calendar.get(Calendar.DAY_OF_MONTH);
     
     return inputForm.equals(calendarForm);
//ここまで
 }
}

入力された生年月日とCalendarクラスに入れて取り出した値が同じならreturnするようにしています。
 

Hold.java

ageを保持するクラス

package servlet;

public class Hold {
 private String age;

 public String getAge() {
  return age;
 }

 public void setAge(String age) {
  this.age = age;
 }
}

 
 
あとは入力するjspファイルと結果を表示るjspファイル(今回はResult.jsp)を作成すれば完成です。

入力jsp(サンプル)

f:id:kiserukun:20210728134943p:plain

出力先jsp(今回はResult.jsp

f:id:kiserukun:20210728134946j:plain

生年月日を入力すると年齢を表示することができました。