質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

733閲覧

HTMLとJAVAを利用した年齢計算

tomotomo1234

総合スコア6

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/06/09 04:41

前提

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 年齢計算サーブレットの作成
  • HTMLで入力された値をもとにJAVAで年齢計算を行い表示する

発生している問題・エラーメッセージ

名前は出るが 年齢計算の結果がnullになる

該当のソースコード

Java

1package pkg1; 2 3import java.io.IOException; 4import java.io.PrintWriter; 5import java.text.ParseException; 6import java.text.SimpleDateFormat; 7import java.util.Calendar; 8import java.util.Date; 9 10import javax.servlet.ServletException; 11import javax.servlet.annotation.WebServlet; 12import javax.servlet.http.HttpServlet; 13import javax.servlet.http.HttpServletRequest; 14import javax.servlet.http.HttpServletResponse; 15import tool.Page; 16 17@WebServlet(urlPatterns={"/pkg1/Age_calculation"}) 18public class Age_calculation extends HttpServlet{ 19 public void doPost ( 20 HttpServletRequest request, HttpServletResponse response 21 ) throws ServletException, IOException { 22 response.setContentType("text/html; charset=UTF-8"); 23 PrintWriter out=response.getWriter(); 24 try { 25 request.setCharacterEncoding("UTF-8"); 26 String name=request.getParameter("name"); 27 28 Calendar calendarBirth = Calendar.getInstance(); 29 Calendar calendarNow = Calendar.getInstance(); 30 31 SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 32 33 Date birthday = sdf.parse(request.getParameter("birthday")); 34 Date now = new Date(); 35 calendarBirth.setTime(birthday); 36 calendarNow.setTime(now); 37 38 int age = calendarNow.get(Calendar.YEAR) - calendarBirth.get(Calendar.YEAR); 39 if (calendarNow.get(Calendar.MONTH) < calendarBirth.get(Calendar.MONTH)) { 40 age -= 1; 41 }else if (calendarNow.get(Calendar.MONTH) == calendarBirth.get(Calendar.MONTH)) { 42 43 if (calendarNow.get(Calendar.DATE) < calendarBirth.get(Calendar.DATE)) { 44 age -= 1; 45 } 46 } 47 48 Page.header(out);out.println("名前"+name+"<br>"); 49 Page.header(out);out.println("年齢" + calcAge(birthday, now) + "歳"); 50 51 52 Page.footer(out); 53 } catch (NumberFormatException e) { 54 out.println("生年月日を入力してください"); 55 } catch (ParseException e) { 56 e.printStackTrace(); 57 } 58 } 59 60 private String calcAge(Date birthday, Date now) { 61 return null; 62 } 63 } 64

試したこと

https://qiita.com/pontyo4/items/14f159e802b312cb0b61
こちらのURLを参考に作成しました。
そして出たエラーはeclipceの修正機能で編集しました。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

年齢計算を行おうとしていると思われるメソッドが「null」を返しています。
実装忘れではないでしょうか。

java

1private String calcAge(Date birthday, Date now) { 2 return null; 3}

投稿2022/06/09 04:48

Matsumon0104

総合スコア1005

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tomotomo1234

2022/06/09 04:52

その場合 ``` Page.header(out);out.println("年齢" + calcAge(birthday, now) + "歳"); ``` のcalcAgeがエラーを吐いてしまい操作に従うとメソッド作成に移ってしまいます、年齢を表示する場合ここを何か変えれば大丈夫でしょうか?
Matsumon0104

2022/06/09 04:56

「birthday」と「now」の差日計算をしてその計算結果を元に年齢を割り出し、「String」で返せばよいかと思います。
Matsumon0104

2022/06/09 06:11

メソッドの参照方法のエラーでしょうか。 メソッド定義を「static」にするか、利用時に「this.calcAge」とすればエラーは解消されるかと思います。
tomotomo1234

2022/06/09 18:21

解決しました、そもそもメソッドを二つに分けていないのと、分けたメソッドの中で分別ができていませんでした。 参考になりました!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問